2017-02-18 1 views
-1

Есть ли способ сделать так, чтобы, если выход randNumber был ниже, чем, скажем, 75, выход randNumber изменится на меньшее число, чем 85? Например, если генератор случайных чисел выбирает 75, так как первое число имеет способ изменить значение остальных выходов после этого, чтобы оно было ниже 85 (то, что оно установлено сейчас).Как создать случайное целое число, которое изменяется с каждым значением x в цикле for в Java?

public static void Hypothetical() { 
    int x; 

    for (x = 0; x <= 4; x++) { 
    Random z = new Random(); 
    int zNumber = z.nextInt(10-5) + 5; 
    Random rand = new Random(); 
    int randNumber = rand.nextInt(85-65) + 65; 
     if (x == 0) { 
      System.out.println("You may begin running."); 
      //TimeUnit.SECONDS.(2); 
      try { 
       Thread.sleep(1000); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
     } 
     if (x == 1) { 
      System.out.println("Your first lap was made in " + randNumber + " seconds"); 
      try { 
       Thread.sleep(2000); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
     } 
     if (x==2) { 
      System.out.println("Your second lap was made in " + (randNumber + zNumber) + " seconds"); 
      try { 
       Thread.sleep(2000); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
     } 
     if (x==3) { 
      System.out.println("Your third lap was made in " + (randNumber + zNumber) + " seconds"); 
      try { 
       Thread.sleep(2000); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
     } 
     if (x==4) { 
      System.out.println("Your final lap was made in " + (randNumber + zNumber) + " seconds"); 
     } 
    } 
} 

}

+3

Не можете ли вы просто восстановить/переназначить zNumber и randNumber внутри цикла? –

+0

Вам действительно нужно, чтобы число было разным каждый раз, или все в порядке, если они отличаются большую часть времени? Если вы собираетесь генерировать последовательность случайных чисел, используя 'rand.nextInt (20)', существует вероятность 1/20, что любое число будет таким же, как и предыдущее число. Если вы хотите убедиться, что все они разные, вам понадобится другой алгоритм. – ajb

+0

Пожалуйста, не полностью переписывайте вопросы, подобные этому, редактируя, поскольку он делает комментарии и ответы, которые другие уже писали, выглядя идиотскими. Лучше удалить и задать новый вопрос. Однако до сих пор неясно, чего вы хотите достичь. – ajb

ответ

0
cond = false; 
loop 
    if (cond) 
     generate values lower than 85 
    else 
     generate number 
     if number < 75, cond = true 
-1

Как я понять ваш вопрос, вы хотите изменить потолок вашего случайного числа. Самый простой способ, которым я могу это сделать, - ввести потолок по модулю, как показано ниже. Хотя, я не уверен, что вы пытаетесь сделать.

limitRanInt = false 
loop 
if(limitRanInt || <rand#> <= 75){ 
    limitRanInt = true 
    <rand#> = <rand#> % 85 
    } 
endloop 
+0

Прежде всего, этот вопрос был помечен как «java», и я не знаю, на каком языке вы ответили. Но в любом случае, я не думаю, что в ответе подходит модуль. Произвольные числа, которые он генерирует, уже ниже 85, поэтому modulo ничего не делает. Но если вы генерируете случайное число от 1 до 85, а затем вы хотите ограничить его до 75, если использование использует '% 75', результаты будут распределены неравномерно - вы получите вдвое больше шансов, чем числа в диапазоне 0..9. – ajb

Смежные вопросы