2015-06-09 5 views
0

Мой вопрос: правильно ли код генерирует случайное число, так как в последние 20 попыток я получил 500 000 5 раз, что не отражает 2% -ный шанс получить его вообще ...Случайные генераторы числа

public static int randInt(int min, int max) { 

     // NOTE: Usually this should be a field rather than a method 
     // variable so that it is not re-seeded every call. 
     Random rand = new Random(); 

     // nextInt is normally exclusive of the top value, 
     // so add 1 to make it inclusive 
     int randomNum = rand.nextInt((max - min) + 1) + min; 

     return randomNum; 
    } 

    public void prizegenerator(View v) { 
     int fate = randInt(0,100); 
     int reward=0; 
     if (fate <= 30) { 
      reward = 1000; 
     } 
     else if (fate <= 50) { 
      reward = 2000; 
     } 
     else if (fate <= 80) { 
      reward = 5000; 
     } 
     else if (fate <=90) { 
      reward = 10000; 
     } 
     else if (fate <= 95) { 
      reward = 50000; 
     } 
     else if (fate <= 97) { 
      reward = 100000; 
     } 
     else if (fate <= 99) { 
      reward = 500000; 
     } 
     else if (fate <= 100) { 
      reward = 1000000; 
     } 
+0

Пожалуйста, не используйте код JavaScript фрагменты для Java , JavaScript и Java не связаны. –

+0

Вы спрашиваете, работает ли «Случайный»? –

+3

Почему вы создаете 'new Random()' каждый раз, когда вы создаете следующий случайный int? – GriffeyDog

ответ

2

Я связал ваш код внутри простого основного метода и работает нормально. Попробуйте сами:

public static void main(String[] args) { 
    Main main = new Main(); 
    List<Integer> list = new ArrayList<Integer>(); 
    for (int i = 0; i < 100; i++) { 
     list.add(main.prizegenerator()); 
    } 
    Collections.sort(list); 

    for (Integer integer : list) { 
     System.out.println(integer); 
    } 
} 

Когда я запускаю его несколько раз, он генерирует в основном в 2 раза, что 500000 соответствуют вашим 2% шанс (на 98 и 99)

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