@80689248440

Как получить 1 или 0 с определённой вероятностью указаной в %?

Добрый день.
сейчас использую rand(0,1) чтоб получить значение 50/50
но появилась нужда управлять вероятностью
делаю вот так но не думаю что это лучшее решение

if(rand(0,100) > 70) $flag = 0;
else $flag = 1;


Уверен что есть более красивое решение.
  • Вопрос задан
  • 251 просмотр
Решения вопроса 2
@Nc_Soft
$flag = mt_rand(0,100) <= 70
Ответ написан
tomnolane
@tomnolane
профессиональный разработчик
пришло в голову такое:
if((rand(0,100) + ($procent /2) ) >= 50) $target = 1;
else $target = 0;

это только для искомых чисел 0 и 1, т.е. для двух
Эти два числа - 100%
каждое из них - половина (50%)
Условно взял, что если рандом выдаст число от 0 до 49 - то $target = 0 (грубо говоря принцип округления)
Если 50 и выше - то $target = 1.
И процент "влияния". Если он равен 100, то $target всегда будет равно 1.

Если $procent положительный - то влияние идёт в сторону 1
Если отрицательный - в сторону 0

на мой взгляд - просто и изящно
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Заполнять массив от 0 до 99 и потом выбирать случайный элемент.

Например: хотим получить 70%. Для этого в массив запихиваем 30 нулей и 70 единиц. Потом выбираем случайный элемент.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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