Функция random()

partizan

Новичок
Функция random()

random value between 0.0 and 1.0
Она может вернуть 1.0?

Если да - получается проблема с генерацией целого числа в интервале [0,n] (0 и n включаются):

Если использовать что-то типа trunc(n*random()) - вероятность получить n маленькая (только когда random() вернет 1.0);
если написать trunc((n+1)*random()) - существует вероятность получить n+1.

Если же вместо trunc использовать round(n*random()), то вероятность получить 0 и n вдвое меньше, чем любое другие значения
(Пример для n=3:
random()*n возвращает число r из интервала [0, 3].
round(r) дает
- 0, когда r принадлежит [0, 1/2) - P = 1/6,
- 1, когда r принадлежит [1/2, 3/2) - P = 1/3,
- 2, когда r принадлежит [3/2, 5/2) - P = 1/3,
- 3, когда r принадлежит [5/2, 3] P = 1/6
)
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: partizan
если написать trunc((n+1)*random()) - существует вероятность получить n+1.
а если написать
Код:
least(trunc(n+1)*random(), n)
?
 

partizan

Новичок
Ну если быть совсем придирчивым - тут получается вероятность получить n чуть-чуть больше чем остальные значения.

А вообще-то я надеялся получить ответ "Не парся, random() не возвращает 1.0 "
 
Сверху