首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自随机模块的random.Random (而不是random.random)在Python中实际上做了什么?

来自随机模块的random.Random (而不是random.random)在Python中实际上做了什么?
EN

Stack Overflow用户
提问于 2018-12-14 11:52:27
回答 1查看 569关注 0票数 1

我想清楚地解释一下random.Random函数/类到底做了什么。这就是Python的随机模块对它的看法。

绑定模块函数使用的随机数生成器基类。用于实例化随机实例以获取不共享状态的生成器。特别适用于多线程程序,为每个线程创建一个随机的不同实例,并使用跳转头()方法来确保每个线程看到的生成的序列不重叠。 如果您想使用自己设计的不同的基本生成器,也可以对类进行子类化:在这种情况下,重写以下方法:随机()、种子()、getstate()、setstate()和jumpahead()。可选地,实现getrandbit()方法,这样随机范围()可以覆盖任意大的范围。

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

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

  • 它似乎只接受一个参数。(字符串,int,浮动)
  • 似乎不接受任何列表或字典作为一个论点;声明它们是不可推卸的。(“难以理解”是什么意思?)
  • 在反复调用它时,它似乎只返回两个值,而不管传递给它的参数是什么,这两个值是'random.Random object at 0x03F24E40‘和'random.Random object at 0x03F26B60’。

我希望我能得到一个简单的解释random.Random做什么,并解释为什么它只返回两个值。(我是初学者,所以请原谅我对这个问题的无知!)

欢迎对像seed()、getstate()、setstate()和jumpahead()这样的函数的工作方式或对任何这样解释的文档/书籍的引用进行任何解释。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-14 16:52:35

简单地说,random.Random()创建了一个伪随机数生成器,即一个对象,该对象生成一系列随机的数字(都是伪随机的)。

random.Random()接受一个可以是“string”、“int”(整数)或“float”(整数或非整数,如3.2或888)的对象。这个对象被称为种子,它可以用来创建一个生成特定伪随机数序列的对象。例如,你可以打电话-

  • random.Random(57)
  • random.Random(888.6)
  • random.Random("Hello World"),或
  • random.Random(99898989)

得到特定伪随机数序列的生成器。但是,只有在程序中需要可重复的“随机性”时,才应该指定种子。

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

代码语言:javascript
复制
# 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的变量;通常,创建生成器本身并不有用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53779251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档