Я разрабатываю инфраструктуру моделирования с некоторыми случайными событиями (например, источники, которые генерируют результат с определенной вероятностью). До сих пор я делал это, используя функцию random.random(). Пример:Как генерировать независимые одинаково распределенные (iid) случайные величины в python
class source:
def output(self, x):
if(random.random()<=x):
return foo
a = []
for i in xrange(10)
a.append(source())
for i in xrange(1000):
for j in xrange(len(a)):
a[j].output()
Из того, что я понимаю, все источники в моем списке «а» получит случайные числа из одной и той же псевдослучайной источники LFSR, поэтому [0] будет получить образец, а затем [ 1] получит следующий, затем [2] и т. Д. Если random.ramdom() генерирует по-настоящему случайную последовательность, я считаю, что все равно будет генерировать 10 iid-подмножеств значений, так как я предполагаю, что python использует LFSR или аналогичную схему, где каждый последующий образец зависит от предыдущего образца, взятие нескольких подмножеств этих выборок может быть или не быть независимым и идентичным образом распределено.
У меня есть два вопроса:
- Каких распределений я на самом деле получить с помощью моего псевдокод или что-то подобное
- Как получить несколько одинаково распределенных случайных величин в Python?
Я смотрел на других постах переполнения стека, как этот, например: Generate multiple independent random streams in python , но они не ответили на мой вопрос.
Я думаю, что это наводнение на практике (не используя Мерсенну, но скорее отвергая случайность Стандарта), как бы ни была хорошая ссылка на «k-распределение» Мерсенна. –
Я отредактировал свой ответ, надеюсь, будет более ясным, я имел в виду, что ** реализация по умолчанию ** в Python использует Mersenne twister – maxymoo