@WiNNeR_tig

Как сделать правильный random?

Есть такой код:
if(mt_rand(0, 100) >= 1){
	Скрыть
}else{
       Показать
}

Всё вроде просто, по идее всего 1 процент вероятность что будет значение "Показать" Но при большом (около тысячи запросов) обращение к коду, получается что Показывает довольно часто. Может есть какой то более грамотный способ решения этой задачи ?

Причём нужна система выдачи в процентах, т.е. пользователь сам настраивает сколько ему надо, от 1% до 99%
  • Вопрос задан
  • 529 просмотров
Пригласить эксперта
Ответы на вопрос 3
BuriK666
@BuriK666
Компьютерный псих
Вам так кажется.
<?php
    $a = 0;
    $b = 0;
    for ($i = 0; $i < 100000; $i++) {
        if(mt_rand(0, 100) >= 1){
            $a++;
        } else {
            $b++;
        }
    }

    echo 'a:', $a/$i, PHP_EOL;
    echo 'b:', $b/$i, PHP_EOL;

a:0.990049
b:0.009951

a:0.990212
b:0.009788

a:0.990317
b:0.009683

a:0.989952
b:0.010048
Ответ написан
rabbit418
@rabbit418
23 yo Designer from Ukraine
Вероятность на то и вероятность, ее невозможно с точьносью просчитать. Можете прогнать простой тест, и хоть на 100, хоть на 1000 тестах результат будет отличаться на ±3-5% от общего значения.

<?php
# Показать с 70% вероятностью
echo rand(1, 100) <= 70 ? "Показать" : "Скрыть";
?>
Ответ написан
Комментировать
@BorisKorobkov Куратор тега PHP
Web developer
Но при большом (около тысячи запросов) обращение к коду, получается что Показывает довольно часто.

Капитан Очевидность подсказывает, что из 1000 запросов при вероятности 1% будет в среднем 10 "показать" и 990 "скрыть".

Причём нужна система выдачи в процентах, т.е. пользователь сам настраивает сколько ему надо

if (mt_rand(0, 100) >= $userOdds) ...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы