LINUX.ORG.RU

Масштабирование диапазонов случайных чисел


0

2

Для простоты будет считать, что есть целое число из диапазона [0, a]. Можно ли получить случайное число из диапазона [0, b] простым домножением на b / a? (Конечно, b <= a, иначе энтропии недостаточно) Как правильно округлять в таком случае до целого?

★★★★★

>Можно ли получить случайное число из диапазона [0, b] простым домножением на b / a?

Можно. Однако распределение случайной величины при этом будет другое. Правила округления это изменить не в состоянии.

aedeph
()

>Для простоты будет считать

Вот кстати как раз непрерывные случайные для анализа значительно проще.

aedeph
()
Ответ на: комментарий от aedeph

Однако распределение случайной величины при этом будет другое.

А можно на пальцах обяснить почему?

dizza ★★★★★
() автор топика
Ответ на: комментарий от dizza

Элементарно. b = 2, a = 3. Выпадет 0 - переходит в 0, выпадает 1 - переходит в 1, выпадает 2 - переходит в 1, выпадает 3 - переходит в 2. Итого 1 выпадает в два раза чаще 0 или 2.

unC0Rr ★★★★★
()
Ответ на: комментарий от dizza

Такой однозначной функции не существует.

Но для больщих a и b отличие от классической вероятности будет не большое.

Еще собственно можно не делить, а просто исключить из рассмотрения вероятность выпадения чисел, больших a.(игнорировать) Или делать другие грязные хаки, но с изначальным вероятностным пространствам это уже связано не будет.

Лучше бы ты сформулировал, что хочешь получить.

aedeph
()
Ответ на: комментарий от dizza

ИМХО один путь тут: вычислить максимальное число c такое, что c <= (a + 1) и c делится на (b + 1). Из последовательности случайных чисел отсекать те, которые больше c, остальные брать по модулю (b + 1)

unC0Rr ★★★★★
()
Ответ на: комментарий от unC0Rr

Да, распределение, отличное от равномерного, естественно, пострадает

unC0Rr ★★★★★
()

если нужно из [0, а] с равномерным распределением получить случайную величину из [0, b] тоже с равномерным распределением, можно выкидывать значения a_i > b, и брать только значения a_i в диапазоне [0, b]

hatefu1_dead
()

для равномерного распределения ненадо ничего умножать и округлять. Либо отсекаешь величины >b либо берёшь из по модулю b. Белый шум так и останется белым шумом.

MKuznetsov ★★★★★
()
Ответ на: комментарий от MKuznetsov

Не. по модулю я думаю нельзя. Вот если есть случайное число от 0 до 7 нормально распределенное, то если взять по модулю 5, то числа 0, 1 и 2 будут чаще появляться, чем остальные

dizza ★★★★★
() автор топика
Ответ на: комментарий от MKuznetsov

Нет, не останется. Если диапазон был [0..3], а станет [0..2], то частота встречи нуля будет в два раза выше, чем остальных чисел.

sanuda
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.