Как правильно реализовать вероятность в Java? - PullRequest
0 голосов
/ 14 июля 2020

Кажется, у меня проблема, я не знаю, почему это все начинает походить на колдовство. Вот как я пытался реализовать вероятность:

int odd = (int)(100.0 * Math.random()); //Number between 1 and 100
if(odd<=50){ //50% chance
   System.out.println("Lucky");
}

Однако, когда я помещаю его так, что нечетное ВСЕГДА уступает 50, если я изменяю «<» на «>», он ВСЕГДА генерирует число больше 50, что означает, что оператор if повторяется каждый раз.

Ответы [ 3 ]

0 голосов
/ 14 июля 2020

Я не понимаю, какая у вас проблема. Я пробовал этот код:

int b = 0;
    for(int i = 0; i <100000;i++){
        int odd = (int) (100.0 * Math.random()); //Number between 1 and 100
        if (odd < 50) { //50% chance
            System.out.println("Lucky");
            b++;
        } else {
            System.out.println("Unlucky");
        }
    }
    System.out.println("Lucky tries : " + b);
    System.out.println("Unlucky tries : " + (100000 - b));
}

И он дал мне следующий результат

Lucky tries : 50060
Unlucky tries : 49940
0 голосов
/ 14 июля 2020

Я думаю, вам просто не повезло или что-то в этом роде, поэтому вы получили 10 или 100 раз, в зависимости от того, как часто вы его тестировали, большее или меньшее число. Поскольку ваш код работает, я в этом уверен.

0 голосов
/ 14 июля 2020

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

...