![]() |
|
||||||||||
|
|||||
|
Регистрация: Sep 2005
Сообщений: 33
|
Подскажите пожалуйста каким образом можно регулировать процент выпадания определенных чисел, например 111 - 30% выпадания, 222 - 20% выпадания, 555 - 10% выпадания и т.д. Из общего диапазона от 001 до 999.
Как лучше генерировать - сразу трехзначное число или отдельно каждый разряд? Есть такая функция для генерации чисел из заданного диапазона: |
|
|||||
|
Регистрация: Jul 2009
Сообщений: 25
|
Рандом на то он и рандом, что шанс выпасть числу 9 из диапазона 1-1000 такой же, как и числу 899.
Первая идея, которая пришла в голову для решения вашей проблемы: Закидываем числа от 1 до 999 в массив и обращаемся к случайному элементу массива array[Случайный номер] - шанс выпасть нужному вам числу(скажем 18) одинаков и равен 1/999, поэтому продливаем массив до 1000 элементов и загоняем туда нужный вам элемент(всё тоже число 18). Теперь обращаемся к случайному элементу массива array[Случайный номер], только теперь, шанс выпасть нужному вам числу равен 2/1000, то есть в 2 раза больше чем у остальных чисел. Последний раз редактировалось ripeLime; 19.07.2009 в 16:33. |
|
|||||
|
Подитожу:
заводим массив, в котором частота появления каждого числа пропорциональна нужной вам вероятности его выпадения. Далее случайным образом выбираем номер элемента массива и все. |
|
|||||
|
Регистрация: Feb 2009
Сообщений: 1,195
|
Только не надо делать действительно массив. Вместо него должны быть условия - если случайное число в определённом диапазоне, то возращать определённое значение.
|
|
|||||
|
А можно и так
Единственно, что процент 111 222 и 555 будет чуть больше 30%, 20% и 10% соответственно, но до тысячи выпаданий погрешность предельно мала. |
|
|||||
|
[+4 05.07.09]
Регистрация: Jun 2009
Сообщений: 114
|
Первая мысль была такой же=)
Но 0.6 - это 60% =\ |
|
|||||
|
60%, что выпадет 555, если не выпадет вот это:
То есть 60% от 70% от 50%, как то так.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Регистрация: Sep 2005
Сообщений: 33
|
Всем спасибо огромное!
|
|
|||||
|
точно такой же код хотел написать днём, но подумал, что не совсем понял вопрос. Если нужно точно 30,20 и 10 процентов, то можно так:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 03:47. |
|
|
« Предыдущая тема | Следующая тема » |
|
|