我想在python中生成多个随机数流。我正在编写一个用于模拟队列系统的程序,并希望一个流用于到达间隔时间,另一个流用于服务时间等等。
numpy.random()
从全局流中生成随机数。
在matlab中有something called RandStream,它使我能够创建多个流。
有没有办法在Python中创建类似RandStream的东西
Numpy和内部随机生成器都具有可实例化的类。
对于random
:
import random
random_generator = random.Random()
random_generator.random()
#>>> 0.9493959884174072
而对于Numpy:
import numpy
random_generator = numpy.random.RandomState()
random_generator.uniform(0, 1, 10)
#>>> array([ 0.98992857, 0.83503764, 0.00337241, 0.76597264, 0.61333436,
#>>> 0.0916262 , 0.52129459, 0.44857548, 0.86692693, 0.21150068])
Veedrac的回答没有解决人们如何产生独立的流。
我能找到生成独立流的最好方法是使用numpy的RandomState替换。这是由RandomGen package提供的。
它支持independent random streams,但它们使用三个随机数生成器之一:PCG64,ThreeFry或Philox。如果你想使用更传统的MT19937,你可以依靠jumping。