Как выбрать случайным образом победителя, учитывая его шанс на победу? Добрый день, уважаемые :) Есть такая задача: Люди делают ставки предметами (предметы оцениваются по цене, цена как правило дробное число = 0.55, 34.22 и т.д), через какое-то время должен выбраться победитель случайным образом, НО с учетом того шанса на победу (чем больше ставка - тем больше шанс победить). Примеры таких сайтов - csgojackpot.com, csgoup.ru Мы реализовали данный алгоритм вот так https://gist.github.com/Riateche/3038910 Но есть сомнения, т.к очень и очень часто выигрывают люди с небольшим шансом (можно конечно оправдать, что мол рандом) Подскажите пожалуйста, правильный ли алгоритм мы используем (учитывая что число случайное - целое, а отрезки шансов в алгоритме - дробные)? И есть ли более подходящие системы случайного выбора победителя, основанные на шансе победы?
Добрый день! Ваш алгоритм на первый взгляд выглядит весьма разумно. Он учитывает шанс на победу каждого участника, пропорционально сумме его ставки. Однако, как и в любом случае случайного выбора, есть вероятность того, что участник с меньшей ставкой выиграет. Это связано с тем, что даже участник с очень маленькой ставкой имеет шанс на победу, хоть и меньший, чем у участника с большей ставкой.
Если вы хотите увеличить вероятность победы для участников с более крупными ставками, можно попробовать следующее:
Увеличить диапазон случайного числа, которое будет выбираться как победитель. Например, если сумма всех ставок равна 100, можно выбирать случайное число от 1 до 1000, чтобы увеличить шансы участников с более крупными ставками.Взвешивать шансы победы участников не только по сумме их ставок, но и по их активности на сайте (количество сделанных ставок, время пребывания на сайте и т.д.).
Помимо этого, можно исследовать другие алгоритмы случайного выбора победителя, такие как алгоритм Эйлера или Лапласа. Но в целом, ваш текущий алгоритм выглядит вполне адекватным для случайной выборки победителя с учётом шанса на победу.
Добрый день!
Ваш алгоритм на первый взгляд выглядит весьма разумно. Он учитывает шанс на победу каждого участника, пропорционально сумме его ставки. Однако, как и в любом случае случайного выбора, есть вероятность того, что участник с меньшей ставкой выиграет. Это связано с тем, что даже участник с очень маленькой ставкой имеет шанс на победу, хоть и меньший, чем у участника с большей ставкой.
Если вы хотите увеличить вероятность победы для участников с более крупными ставками, можно попробовать следующее:
Увеличить диапазон случайного числа, которое будет выбираться как победитель. Например, если сумма всех ставок равна 100, можно выбирать случайное число от 1 до 1000, чтобы увеличить шансы участников с более крупными ставками.Взвешивать шансы победы участников не только по сумме их ставок, но и по их активности на сайте (количество сделанных ставок, время пребывания на сайте и т.д.).Помимо этого, можно исследовать другие алгоритмы случайного выбора победителя, такие как алгоритм Эйлера или Лапласа. Но в целом, ваш текущий алгоритм выглядит вполне адекватным для случайной выборки победителя с учётом шанса на победу.