LINUX.ORG.RU

random natural numbers set1 -> set2


0

1

Озадачили тут паззлом.

Есть функция rand0,4 например, которая генерирует натуральные числа 0,1,2,3,4 с равной вероятностью (не float'ы). Нужно используя ее написать функцию rand0,6 (тоже равномерную). Как это сделать?

Если бы это были float'ы тогда ничего сложного:

rand0,6 = rand0,4/4 * 6

Но так как это натуральные числа, то будут округления и распределение перестанет быть вероятным. Как такую задачу решить?

Ну коли у тебя в одном случае 5 возможных вариантов, а в другом 7, то тебе нужно 7 раз вызывать ту функцию, складывать результаты и делить на 5. Только тогда распределение будет нормальным, а не равномерным. Чтобы распределение было нормальным, ты можешь сделать таблицу соответствий вместо деления, но это несколько муторно.

S-Mage ★★
()
Ответ на: комментарий от S-Mage

else переброс

переброс не очень - нет гарантий отностиельно времени работы новой ф-ии, лучше подогнать под кратность 7: скажем пребрасываем 4 вариата из 5, получается 4*5+1 - нормируем первые на 25/21, а пятый на 5/21

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.