Надо кое-что добавить. Я сегодня таки сел и посчитал, и вышло, что для не очень даже и космических значений

значение

, где

, уйдёт выше

. Для провала в 99% случаев достаточно

, что, в принципе, может встретиться. Так что выкалывание нуля, выходит, не особо помогает — правильный подход всё-таки требует проверку, которой и случай передачи нуля покроется (ведь тогда логарифм должен выдать

, при делении которой на отрицательное конечное число получится

, которая ровно так же больше

или

, как и остальные «неудачные» результаты). Теперь предпочтение
1 - rand перед
rand для меня снова неясно.
-- Ср сен 02, 2015 22:44:55 --Ах да. Некоторые значения

, конечно, безобидны для любого ненулевого значения

, а именно, если

получено делением случайного uint32 на

, понятно, наименьшее такое значение будет равно

, и наименьшее

, при котором мы при этом не вылезем за

, будет около

— тоже вполне может попасться.
-- Ср сен 02, 2015 22:49:53 --С другой стороны, среднее значение величины с таким параметром распределения намекает на неприменимость uint32 в этом случае намного яснее, и особенно в страшных случаях из начала этого поста.