partizan
Новичок
Функция random()
Если да - получается проблема с генерацией целого числа в интервале [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
)
Она может вернуть 1.0?random value between 0.0 and 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
)