Python 的随机:如果我不使用种子(someValue)会发生什么?

发布于 2024-07-18 06:35:11 字数 95 浏览 3 评论 0原文

a)在这种情况下,随机数生成器在每次运行时是否使用系统时钟(使种子发生变化)?

b) 种子是否用于生成 expovariate(lambda) 的伪随机值?

a)In this case does the random number generator uses the system's clock (making the seed change) on each run?

b)Is the seed used to generate the pseudo-random values of expovariate(lambda)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

绮烟 2024-07-25 06:35:11

“使用源头,卢克!”...;-)。 学习 https://svn.python.org/projects/python/trunk /Lib/random.py 会很快让你放心;-)。

当种子未设置时会发生什么(即“i is None”情况):

if a is None:
    try:
        a = long(_hexlify(_urandom(16)), 16)
    except NotImplementedError:
        import time
        a = long(time.time() * 256) # use fractional seconds

和 expovariate:

random = self.random
u = random()
while u <= 1e-7:
    u = random()
return -_log(u)/lambd

显然使用与所有其他方法相同的底层随机生成器,因此同样受到种子或缺乏种子的影响(实际上,如何否则它会被完成吗?-)

"Use the Source, Luke!"...;-). Studying https://svn.python.org/projects/python/trunk/Lib/random.py will rapidly reassure you;-).

What happens when seed isn't set (that's the "i is None" case):

if a is None:
    try:
        a = long(_hexlify(_urandom(16)), 16)
    except NotImplementedError:
        import time
        a = long(time.time() * 256) # use fractional seconds

and the expovariate:

random = self.random
u = random()
while u <= 1e-7:
    u = random()
return -_log(u)/lambd

obviously uses the same underlying random generator as every other method, and so is identically affected by the seeding or lack thereof (really, how else would it have been done?-)

忆梦 2024-07-25 06:35:11

a) 它通常使用系统时钟,某些系统上的时钟可能只有毫秒精度,因此种子两次很快可能会产生相同的值。

种子(自身,a=无)
从可哈希对象初始化内部状态。

没有或没有来自当前时间或操作的参数种子 
  系统特定的随机源(如果可用)。 
  

http://pydoc.org/2.5.1/random.html#随机种子

b)我想 expovariate 确实如此,但我找不到任何证据。 如果不这样做那就太傻了。

a) It typically uses the system clock, the clock on some systems may only have ms precision and so seed twice very quickly may result in the same value.

seed(self, a=None)
Initialize internal state from hashable object.

None or no argument seeds from current time or from an operating
system specific randomness source if available.

http://pydoc.org/2.5.1/random.html#Random-seed

b) I would imagine expovariate does, but I can't find any proof. It would be silly if it didn't.

究竟谁懂我的在乎 2024-07-25 06:35:11

使用当前系统时间; 当模块首次导入时,当前系统时间也用于初始化生成器。 如果操作系统提供随机源,则使用它们而不是系统时间(有关可用性的详细信息,请参阅 os.urandom() 函数)。

随机文档

current system time is used; current system time is also used to initialize the generator when the module is first imported. If randomness sources are provided by the operating system, they are used instead of the system time (see the os.urandom() function for details on availability).

Random Docs

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文