| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > Случайный выбор из массива с % коррекцией |
| Автор: chaosty 2.1.2008, 13:54 | ||
Есть двумерный массив, с идентификатором и % "срабатывания"
Задачка каждый раз выбирать "случаный" ид из массива, но увеличивать шанс срабатывания в зависимости от %... то есть к примеру из 10 итераций, 5 раз должно повезти $arr[1], возможны небольшие расхождения. никак не могу представить формулу в голове :( форум посмотрел, но не нашел такого. |
| Автор: chaosty 2.1.2008, 14:13 |
| Гм, а есть экземпляр на С или php\perl? Я к сожалению не математик) |
| Автор: JackYF 2.1.2008, 14:39 |
у меня нет, но можешь посмотреть исходники boost::random, там есть реализация многих распределений случайных чисел, в том числе, ЕМНИП, и этого. |
| Автор: maxim1000 2.1.2008, 16:50 |
| предположим у нас есть возможность генерировать псевдослучайное целое число из 0..9 с одинаковой вероятностью для каждого значения всего у нас 10 возможных значений разобьём их на 4 группы: 0..4, 5..6, 7..8, 9 тогда вероятности, что число попадёт в один из отрезков такие: 0 - 50% 1 - 20% 2 - 20% 3 - 10% конечно, здесь не получится смоделировать вероятности типа 25% - тогда нужно будет использовать числа хотя бы из 0..19, ну и т.д. |
| Автор: chaosty 2.1.2008, 17:30 |
| Допер) на самом деле все проще, просто делаем еще один массив, из 100 элементов, заполняем его Ключами первого массива в соотношении % тоесть к примеру $arr[0] - $arr[50] будет равнятся 1, с 50 по 70 будет 2 ну и так далее.. потом просто берем рандом от 0 до 100, и получаем % срабатывания.. |
| Автор: Akina 2.1.2008, 18:42 |
Зачем? делаем просто массив соответствия вероятностей: конвертируется в 0 - from 0 to 0.5 1 - from 0.5 to 0.7 2 - from 0.7 to 0.9 3 - from 0.9 to 1 и смотри, куда попал очередной rnd() |
| Автор: chaosty 2.1.2008, 19:11 |
| я массив указал просто для вида, он может быть и на 50 записей, проценты могут быть любыми. то есть задается динамически. |
| Автор: Akina 2.1.2008, 23:58 |
а какая разница? и вообще - какого рожна проценты? что, трудно в доли пересчитать? тогда делаешь сумму с накоплением - и ты в шоколаде. PS. А будешь планировать на целые значения - не забывай о завалах RND по краям, а то ждут тебя сюрпризы |