Надо кое-что добавить. Я сегодня таки сел и посчитал, и вышло, что для не очень даже и космических значений
значение
, где
, уйдёт выше
. Для провала в 99% случаев достаточно
, что, в принципе, может встретиться. Так что выкалывание нуля, выходит, не особо помогает — правильный подход всё-таки требует проверку, которой и случай передачи нуля покроется (ведь тогда логарифм должен выдать
, при делении которой на отрицательное конечное число получится
, которая ровно так же больше
или
, как и остальные «неудачные» результаты). Теперь предпочтение
1 - rand перед
rand для меня снова неясно.
-- Ср сен 02, 2015 22:44:55 --Ах да. Некоторые значения
, конечно, безобидны для любого ненулевого значения
, а именно, если
получено делением случайного uint32 на
, понятно, наименьшее такое значение будет равно
, и наименьшее
, при котором мы при этом не вылезем за
, будет около
— тоже вполне может попасться.
-- Ср сен 02, 2015 22:49:53 --С другой стороны, среднее значение величины с таким параметром распределения намекает на неприменимость uint32 в этом случае намного яснее, и особенно в страшных случаях из начала этого поста.