root09
@root09

Как реализовать шанс?

Как можно реализовать шанс выполнения какого-либо действия?
Например есть 3 действия и к ним заданы следующие шансы:

1. 20%
2. 40%
3. 60%

Как выбрать случайное действие?
Есть идея сложить все шансы, получится 20+40+60=120, потом через rand выбрать случайное значение из 120, и какая цифра выпадет - то действие и будет. Но если будет какое-либо действие с 100% шансом стоять, то такой метод не подойдет... подскажите как лучше сделать?
  • Вопрос задан
  • 392 просмотра
Решения вопроса 1
index0h
@index0h
PHP, Golang. https://github.com/index0h
Вы зря указываете проценты, это не корректно. 20, 40, 60 - это просто множители вероятности попадания. Так что даже если будет 20, 40, 60, 100 - это проблемой не будет. Считаете rand(0, 20+40+60+100), далее определяете в какие пределы попало число.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
usdglander
@usdglander Куратор тега PHP
Yipee-ki-yay
Группа событий полная или события независимые?
Для независимых событий:
if (rand(0,100) < 20) 
{ 
  /*Выполняем событие 1*/
}
if (rand(0,100) < 40) 
{ 
  /*Выполняем событие 2*/
}
...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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