Я привык к генераторам псевдослучайных чисел, которые возвращают значения с плавающей запятой в полуоткрытом интервале [0,1].В каких ситуациях разница между случайными числами, сгенерированными на [0,1) и порожденными на [0,1], имеет значение?
Я видел некоторую ссылку на RNG, которые могут возвращать значения на закрытом интервале [0,1], например. this implementation of the Mersenne Twister.
Я вижу причины, по которым вы хотите исключить одну или обе из конечных точек по математическим причинам, например.
exponentially_distributed=-logf(1.0-rng())
всегда дает действительное число, если 0.0<=rng()<1.0
.
Но я не могу представить себе случай, когда замена rng yielding [0,1] на ту, которая дает [0,1], приведет к какой-либо практической разнице.
В каких ситуациях имеетс генератор псевдослучайных чисел с плавающей запятой , который полностью возвращает значения на отрезке [0,1]?
не думаю есть. Тем не менее, это может иметь значение при полах, из-за ограниченной точности типов с плавающей точкой. –
+1 Отличный вопрос. Я также задаюсь вопросом, почему RNG часто находятся на полуоткрытом интервале. Это не похоже на то, что вы можете просто генерировать случайные биты для числа с фиксированной точкой, и как они получают однородность по числу с плавающей запятой? –
Я думаю, что ваш вопрос может иметь больше общего с реализацией генерации случайного двойника, чем его использования. Возможно, было бы неплохо расширить вопрос, включив в него как поколения, так и варианты использования. –