Невозможно 2147483648 конфет раздать поровну миллиарду детишек: у кого-то будет две, у кого-то три.
Будьте осторожны с rand()%N
Ссылки:
Как правильно делать в C++11:
http://dobrokot.ru/pics/i2014-06-27__02-01-24_55kb.png (из
этой презентации,
видео), спасибо
bik_top
(
Read more... )
Comments 29
Reply
Связанная задача: Имея честную монетку, научиться эмулировать честный игральный кубик с шестью гранями.
Reply
Только не просто для больших/небольших, а связанных с RAND_MAX:
Тут более-менее толково написано:
http://stackoverflow.com/questions/10984974/why-do-people-say-there-is-modulo-bias-when-using-a-random-number-generator
Reply
А вот как эмулировать эффективно - это уже интереснее..
Reply
Я с этим столкнулся - когда с лабы на реальном физ. устройстве потерял бумажку с данными, не печалясь я нагенрил случайные числа. Препод таращил глаза и говорил - никогда на этих приборах такого идеального "колокола" не получал.
Reply
Reply
Кста, а где обещали? я тут открыл парочку аффторитетных ссылок и нигде не обещают. Только cplusplus.com упомянули такое: "Notice though that this modulo operation does not generate uniformly distributed random numbers in the span (since in most cases this operation makes lower numbers slightly more likely)."
Reply
К rand() это не относится.
2) У теоремы Ляпунова есть довольно сильные ограничения (i.i.d. и ограничение дисперсий).
Reply
Reply
Reply
( из презентации https://onedrive.live.com/view.aspx?resid=E66E02DC83EFB165!312&cid=e66e02dc83efb165&app=PowerPoint )
Reply
Reply
Так как я пытался из 20-битного хеша получить "случайный" индекс в 700'000-элементном массиве.
Вообще можно представить себе фейл в любом месте, где использутся rand() и надеются на равномерность его результата
Reply
Так же можно представить себе фейл в любом месте, где пользуются острым ножиком.
Индустрия уже перешагнула этап полного детерминизма и программы просто работают "в большинстве случаев", а если ошибок в каком-то сценарии стало слишком много - выпускается патч.
Написание программ, свободных от ошибок - удел сильно больных на голову одиночек :)
Попытка написания программ, свободных от ошибок - удел слегка больных на голову одиночек :)
Reply
http://wizzard0.livejournal.com/440212.html#comments
Reply
Leave a comment