[identity profile] newacct.livejournal.com posting in [community profile] useful_faq
У меня есть генератор случайных чисел, который генерирует случайное не целое число в диапазоне от 0 до 1 (Например, результат работы: 0,58). Используя результат работы такого генератора, мне нужно арифметическими действиями сделать генератор от 1 до 6 (только целые). Операцию округления я использовать могу.

Подскажите, пожалуйста.

Date: 2008-12-03 07:37 pm (UTC)
From: [identity profile] urvin.livejournal.com
int(rnd*5 + 1)

Date: 2008-12-03 07:51 pm (UTC)
From: [identity profile] poneslasj.livejournal.com
с учетом того что нужно получить равномерное распределение по 6 натуральным числам умножение на 5 сомнительно выглядит. доказать не могу голова уже не соображает но floor(rnd*6+1) выглядит честнее

Date: 2008-12-03 08:37 pm (UTC)
From: [identity profile] besisland.livejournal.com
Если int подразумевает округление к ближайшему целому, то вероятности будут распределены так:
1 — 10 %
2 — 20 %
3 — 20 %
4 — 20 %
5 — 20 %
6 — 10 %
Плохой способ.

я подозреваю

Date: 2008-12-04 07:17 am (UTC)
From: [identity profile] proxor.livejournal.com
int означает полное отбрасывание дробной части.

В этом случае

Date: 2008-12-04 07:31 am (UTC)
From: [identity profile] besisland.livejournal.com
1 — 20 %
2 — 20 %
3 — 20 %
4 — 20 %
5 — 20 %
6 — 0 %
Плохой способ.