我想对random.Random函数/类的实际作用有一个清晰的解释。这就是Python的随机模块必须说的。
绑定模块函数使用的随机数生成器基类。 用于实例化Random实例以获取不生成的生成器 共享状态。对于多线程程序特别有用,它可以创建 每个线程使用不同的Random实例,并使用 jumpahead()方法可确保每个生成的序列均可见 线程不重叠。
如果您想使用其他类型的随机类,也可以将其子类化 您自己设计的基本生成器:在这种情况下,请覆盖 以下方法:random(),seed(),getstate(),setstate()和 跳跃前进()。 (可选)实现getrandbits()方法,以便 randrange()可以覆盖任意大范围。
我不明白这一点,因为我仍然是Python的初学者。我确实对基类和派生类有所了解,这显然与它有关。
我尝试使用Python的IDLE中的random.Random()函数/类,发现了以下内容。
我希望我能对random.Random的作用做一个简单的解释,并解释为什么它只返回两个值。 (我是一个初学者,所以请原谅我对此主题的无知!)
欢迎对任何诸如seed(),getstate(),setstate()和jumpahead()之类的功能的解释,或对任何解释此类解释的文档/书籍的引用。
答案 0 :(得分:1)
简单来说,random.Random()
创建一个伪随机数生成器,即一个对象,该对象生成一系列看起来随机的数字(是 pseudorandom )。
random.Random()
接受一个对象,该对象可以是“字符串”,“ int”(整数)或“ float”(整数或非整数,例如3.2或888)。该对象称为 seed ,它可用于创建生成特定伪随机数序列的对象。例如,您可以致电-
random.Random(57)
,random.Random(888.6)
,random.Random("Hello World")
或random.Random(99898989)
,获取特定伪随机数序列的生成器。但是,只有在程序中需要可重复的“随机性”时,才应指定 seed 。
然后您可以使用此生成器从该序列中提取伪随机数:
# Create a generator without
# a seed, so that the pseudorandom
# sequence will almost surely differ
# from run to run
randomGen = random.Random()
# Generate a number in [0, 1)
number = randomGen.random()
# Generate an integer in [0, 5]
number = randomGen.randint(0, 5)
请注意,该示例将生成器从random.Random
分配给名为randomGen
的变量;通常,仅创建生成器本身并没有用。