![]() |
Настраиваемый генератор случайных чисел
Здравствуйте! Встречал ли кто-нибудь алгоритм, который случайно выдает одну из (например пяти) цифр, но при этом его можно настроить? Например, задать ему (этому классу или методу), чтобы число 5 выпадало чаще или реже, а число 2 выпадало реже или чаще и т.д. Может, даже, задавать коэффициент вероятности выпадения того, или иного числа. Или подскажите, пожалуйста, как такое сделать.
|
Обычно ищут случайность, а вы наоборот :)
В массив загоните числа которые нужны... например Код AS3:
|
Math.random() < 0.5 случается в 50% случаев, Math.random() < 0.1 случается в 10% случаев. По крайней мере должно быть так. Но для криптографии флешевый рандом, например, не подходит, т.как недостаточно информации в одном запросе. Очень часто для криптографии нужно больше 52 битов. Имитировать /dev/urandom можно примерно таким же способом, как устроен и сам urandom - т.е. копированием "шума" не имеющего цикличности - чего-нибудь связанного с действиями пользователя, например, смещение мышки, нажатые клавиши, разницу между системным временем и предполагаемым идеальным временем вызова таймера по которому рандом обновляется, конечно же, такой рандом лучше хранить на машине пользователя, для лучшей последовательности.
Естественно, каждое обращение к рандому должно генерировать его по-новому. |
wvxvw, чет я вашей мысли не уловил... применимо к задаче...
|
Спасибо за ответы.
Партизан, вы показали как выбрать случайное число из некоторого диапазона чисел, но в этом проблема не стоит. wvxvw, ничего не понял, но что-то подсказывает мне, что вы показали как сымитировать случайное число вручную. К сожалению интересует другое: Есть 5 чисел: Код AS3:
Нужно, чтобы, например, число "2" в среднем выводилось в 2 раза чаще остальных: 1, 2, 4, 2, 3, 4, 2, 0, 1, 2. Возможно ли создать такой, алгоритм, в котором можно задать, чтобы некоторое число выводилось чаще остальных? И если да, то как? |
Так расширьте исходный массив так, как показал Партизан. И делайте рандомную выборку уже оттуда.
|
например должны выпадать числа от 1 2 и 3 причём 3 должен выпадать в два раза чаще чем 1 и 2
Код AS3:
то принцип точно такой только циклом |
Цитата:
artcraft, если придется выбирать среди 10-ти 20-ти чисел - будет много писанины и много вручную производить подсчеты. Тоесть, для каждого числа из 20-ти придется выбирать диапазон и сравнивать... Спасибо всем. |
"будет много писанины" пф...
Код AS3:
Добавлено через 30 минут методом который предлагает партизан будет трудно организовать шанс 1 : 100000000 или 1 : 0.0697602774 а вот моей функцией запросто |
[redacted]
Упс, не туда посмотрел, я не сразу понял, как сума считается, сорри. |
| Часовой пояс GMT +4, время: 14:24. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.