随机模块中的random.random(不是random.random)在Python中实际做什么?

随机模块中的random.random(不是random.random)在Python中实际做什么?,python,random,Python,Random,我想对random.random函数/类的实际功能有一个清晰的解释。这就是Python的random模块对它的看法 绑定模块函数使用的随机数生成器基类。 用于实例化Random的实例,以获取不需要的生成器 共享状态。特别适用于多线程程序,创建 为每个线程创建不同的Random实例,并使用 jumpahead()方法,以确保每个 线不重叠 如果您想使用不同的 您自己设计的基本生成器:在这种情况下,覆盖 以下方法:random()、seed()、getstate()、setstate()和 向前跳(

我想对random.random函数/类的实际功能有一个清晰的解释。这就是Python的random模块对它的看法

绑定模块函数使用的随机数生成器基类。 用于实例化Random的实例,以获取不需要的生成器 共享状态。特别适用于多线程程序,创建 为每个线程创建不同的Random实例,并使用 jumpahead()方法,以确保每个 线不重叠

如果您想使用不同的 您自己设计的基本生成器:在这种情况下,覆盖 以下方法:random()、seed()、getstate()、setstate()和 向前跳()。或者,实现getrandbits()方法,以便 randrange()可以覆盖任意大的范围

我不理解这一点,因为我仍然是Python的初学者。我确实了解一些基类和派生类,这显然与此有关

我尝试在Python的IDLE中使用random.random()函数/类,并发现了以下内容

  • 它似乎只接受1个参数。(string、int、float)
  • 似乎不接受任何列表或字典作为论据;表示他们不可悲。(什么是“不可破坏的”意思?)
  • 无论传递给它的参数是什么,它似乎只在反复调用时交替返回两个值,这两个值分别是“0x03F24E40处的random.random对象”和“0x03F26B60处的random.random对象”
我希望我能对random.random的功能有一个简单的解释,也能解释为什么它只返回两个值。(我是初学者,请原谅我对这个问题的无知!)


欢迎对seed()、getstate()、setstate()和jumpahead()等函数的工作原理进行任何解释,或引用任何文档/书籍进行解释。

简单来说,
random.random()
创建伪随机数生成器,即生成随机数序列的对象

random.random()。该对象称为种子,可用于创建生成特定伪随机数序列的对象。例如,你可以打电话-

  • 随机。随机(57)
  • random.random(888.6)
  • random.random(“你好世界”)
    ,或
  • random.random(99898989)
获取特定伪随机数序列的生成器。但是,只有在程序中需要可重复的“随机性”时,才应该指定种子

然后可以使用此生成器从该序列中提取伪随机数:

# 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
的变量;一般来说,仅仅创建一个生成器本身是没有用的。

随机模块
seed
randint
等中的所有其他函数都是在这个类中定义的。它们都具有相同的种子值,即高斯值,因此,您只需执行一次
random.seed
。的文档是否不够清晰?>返回[0.0,1.0]范围内的下一个随机浮点数对不起,我想你误解了我的问题@reportgunner。我指的是random.random()而不是random.random()。这只是因为它返回下一个
随机生成器。如果在变量中至少存储其中一个,则会得到第三个值,依此类推。>>>a=random.random()>>>b=random.random()>>>c=random.random()>>>a,b,c(,)