![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| QaaZ |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 21.11.2007 Репутация: нет Всего: нет |
Вот к примеру у меня есть сценарий, который случайным(rand(0,9)) образом выбирает 3 числа. Например [3 5 3].
Как можно сделать так, чтобы шанс на то, что выпадет [7 7 7] был к примеру 80% или 99%. Вообще, как реализуется "шанс" ? Заранее большое спасибо и извините, если это обсуждалось уже, поиск результатов не дал. Это сообщение отредактировал(а) QaaZ - 20.11.2008, 18:05 |
|||
|
||||
| theworldcreator |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 362 Регистрация: 25.8.2007 Где: Москва Репутация: 10 Всего: 13 |
Когда я столкнулся с такой задачей, не стал вникать и просто заполнял массив($arr[mt_rand(0, count($arr)-1)]) бОльшим количеством одинаковых чисел с высоким шансом выпадения, чем с меньшим. Может есть и более рациональный способ.
|
|||
|
||||
| QaaZ |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 21.11.2007 Репутация: нет Всего: нет |
Хм...как вариант! Правда хотелось бы услышать, может есть еще какие-нибудь способы.
Спасибо большое, поставил бы плюсик, да только пока немогу. |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
в твоем случае - все достаточно просто. проверяем: если rand()> 0.01(вероятность - 99%), то возвращаем 7 7 7, в противном случае - генерируем тройку случайных чисел(проверяем при этом, чтоб там было не 7 7 7). в более сложных случаях алгоритм может быть(будет) другим. |
|||
|
||||
| QaaZ |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 21.11.2007 Репутация: нет Всего: нет |
Извините, я несовсем понял, если можно, будьте добны
Вы имеете ввиду, чтото вроде этого:
Если да, тогда возникает вопрос, как rand() может быть больше 0,01 % ? о_О Что-то я несовсем понимаю.. Это сообщение отредактировал(а) QaaZ - 20.11.2008, 19:00 |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
||||
|
||||
| QaaZ |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 21.11.2007 Репутация: нет Всего: нет |
Большое спасибо..
Это сообщение отредактировал(а) QaaZ - 20.11.2008, 20:23 |
|||
|
||||
| Shogun |
|
|||
|
сёгун-сан ![]() ![]() Профиль Группа: Участник Сообщений: 290 Регистрация: 8.6.2006 Где: Кишинёв Репутация: 9 Всего: 11 |
мммм, я тоже както думал о такой теме.
А если так?? :
-------------------- 2b || !2b |
|||
|
||||
| theworldcreator |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 362 Регистрация: 25.8.2007 Где: Москва Репутация: 10 Всего: 13 |
ИМХО идея skyBoy лучше моей)
|
|||
|
||||
| Shogun |
|
|||
|
сёгун-сан ![]() ![]() Профиль Группа: Участник Сообщений: 290 Регистрация: 8.6.2006 Где: Кишинёв Репутация: 9 Всего: 11 |
theworldcreator - может быть.
-------------------- 2b || !2b |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
я думаю, можно сделать так:
функция $callback принимает один аргумент(сгенерированное случайное число от 0 до 1) и возвращает значение распределения вероятности для этого числа. для равномерного распределения вероятности возвращает 1. для равномерно возрастающего(чем более число, тем вероятнее его использование) просто возвращает входящее число и тыды. естественно, функция urand() возвращает только число от 0 до 1, потому надо бы доработать для произвольных интервалов. или даже дискретных последовательностей. Добавлено через 4 минуты и 22 секунды если $callback вернет 0 - то случайное значение не будет использовано. если $callback вернет 1 - случайное значение будет использовано. в остальных случая вероятность использования случайно выбранного от 0 до 1 числа составляет $callback/1ю |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |