【问题标题】:What range of values does python's random seed take?python的随机种子取值范围是多少?
【发布时间】:2022-01-12 07:48:20
【问题描述】:

Python 的 int 类型允许非常大的值,但如果我将 10**100000 传递给 random.seed,它肯定不会实际存储它 - 它只是在内部使用 32 位整数吗?

【问题讨论】:

  • 你为什么不试试,显示结果?文档可能会给你一个提示,这里是docs.python.org/3/library/…
  • @balmy 不知道你怎么测试这个,真的
  • @Mahrkeenerh 似乎不太难:import random random.seed=10**10000 print(random.seed) 这样可以吗?注意你会得到很多零
  • random.seed 将永远是方法 - 查看它的“内部状态”的唯一方法是使用 random.getstate()
  • 查看此链接:stackoverflow.com/questions/48503151/…。显然它是 20.000 位。

标签: python random random-seed


【解决方案1】:

如果您作为 int 传递,将使用 20.000 位(从右侧开始),与 @joostblack 一致,请参阅 Is there a maximum character limit to random seed?documentation 声明 int 是直接使用的,但是,应该查看源代码以了解其含义。

如果您想使用所有数字,您可以自己拆分数字并将其作为字节数组提供,在这种情况下应用哈希函数。 1

int案例的详细信息

如果您将 at 作为 int 传递,python 会将其拆分为 32 位块 2,并根据这些整数的列表设置 Mersenne Twister 的内部状态变量,方法是在列表上应用非线性函数 @ 987654325@。如果您没有足够的值,例如如果你给了一个 64 位的 int,另一个非线性函数将被用来初始化内部状态变量4

【讨论】:

    猜你喜欢
    • 2012-09-04
    • 2023-03-25
    • 2012-07-14
    • 2012-07-16
    • 2020-02-21
    • 2011-09-06
    • 1970-01-01
    • 2010-12-22
    • 2013-12-03
    相关资源
    最近更新 更多