[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: PHP задания для практики
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22
Invis1ble
twin
Цитата
Теперь три числа. 1, 1 и 0. Тут какова? 33,33%? А вот и нет. Те же 50%. потому что может выпасть или 1 или 0.

Неогласен.
При такой постановке задачи фактически мы имеем 3 события:
первое - выпадение 1-ой единицы
второе - выпадение 2-ой единицы
третье - выпадение нуля
Если вероятность наступления каждого из этих 3-х событий = 1/3, то вероятность выпадения любой из двух единиц - 2/3 (вероятность появления одного из двух несовместных событий, безразлично какого, равна сумме вероятностей этих событий), а выпадения 0 - 1/3.
Цитата
расчитать точность до десятой (а тем более тысячной) процента - в корне неверная задача

рассчет точности мне не нужен, его я использовал, чтобы оценить представленные алгоритмы еще хоть как-то, кроме как по времени выполнения.
Мне попросту необходим оптимальный алгоритм, моделирующий наступление событий максимально соответствующее реальной жизни. Есть какие-то идеи, как смоделировать данный процесс по-другому? И чем собственно плох мой алгоритм, я кстати так и не понял...

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

alive
Свернутый текст


// функция вероятностного вывода Invis1ble

function getProbability_1($events)
{
while (true)
{
$r = array_rand($events);
if (mt_rand(1, 1000000) <= $events[$r] * 1000000)
return $r;
}

}

// функция вероятностного вывода Invis1ble

function getProbability_2($events)
{
while (true)
{
$r = array_rand($events);
if (mt_rand(1, 1000000) <= $events[$r] * 1000000)
break;
}
return $r;
}

// функция вероятностного вывода twin
function getProbability_3($events)
{
do
{
$r = array_rand($events);
}while(mt_rand(1, 1000000) > $events[$r] * 1000000);
return $r;
}



у всех 3-х функций "точность" достаточная, как показывает тест.
скорость функции 3 чуть чуть выше, чем 2. а первая работает на порядок дольше.

Вообще все представленные ф-ии делают тоже самое, а тут мы просто делаем лишние действия, тем что рандомно достаем из массива ключи и тутже выбрасываем.

когда малые вероятности расположены ближе к началу, можно предложить обратную сортировку, но в этом тоже смысла нет, лишняя нагрузка для остальных случаев.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.