【问题标题】:How to Generate N random numbers in Python 3 between 0 to infinity如何在 Python 3 中生成 N 个介于 0 到无穷大之间的随机数
【发布时间】:2016-02-12 11:45:23
【问题描述】:

如何在 python 3 中生成 n 个随机数? n 是一个待确定的变量。最好是自然数(整数> 0), 我找到的所有答案都从一个范围内获取随机整数,但是我不想从一个范围内生成数字。 (除非范围是 0 到无穷大)

【问题讨论】:

  • 无穷大是一个相当大的数字。 :-) 它在数学中非常方便,但很难以编程方式表示
  • 你说“在 0 到无穷大之间”……什么分布?你不能实现这个给所有数字相等的可能性,所以这个问题的“默认答案”是无效的。

标签: python python-3.x random numbers


【解决方案1】:

套用维特根斯坦的话说,机器的极限就是语言的极限。即在计算机/计算世界中没有无限这样的东西。您可以使用sys.maxsize(python 2 中的sys.maxint)获取机器支持的最大正整数并将其传递给random.randint 函数:

>>> import sys
>>> sys.maxsize
9223372036854775807
>>> random.randint(0,sys.maxsize)
7512061515276834201

对于生成多个随机数,您可以使用如下列表推导:

>>> N = 10
>>> [random.randint(0,sys.maxsize) for _ in range(N)]
[3275729488497352533, 7487884953907275260, 36555221619119354, 1813061054215861082, 619640952660975257, 9041692448390670491, 5863449945569266108, 8061742194513906273, 1435436865777681895, 8761466112930659544]

更多关于sys.maxintsys.maxsizepython 2.X and 3.X中的区别的信息:

sys.maxint 常量已被删除,因为不再有 限制为整数的值。但是,sys.maxsize 可以用作 大于任何实际列表或字符串索引的整数。它符合 实现的“自然”整数大小,通常是相同的 与同一平台上先前版本中的 sys.maxint 一样(假设 相同的构建选项)。

【讨论】:

  • Python 3 中没有sys.maxint... OP 需要重新考虑这个问题并为其提供更多上下文。
  • @xnx 是的,我错过了 python3 标签。实际上在 pyhthon 3 中是sys.maxsize
  • sys.maxsize 是“可以用作大于任何实际列表或字符串索引的整数”,但它不是 Python 3 可以表示的最大整数(仅受可用内存的限制实施)。
【解决方案2】:

我认为您可能需要重新考虑您要使用所需的随机数做什么。特别是,您从哪个分布中抽样? 如果您希望随机数均匀分布(选择每个数字的概率相等),则不能:您需要无限量的内存(或时间,或两者兼而有之)。

当然,如果您允许非均匀分布,这里有一些介于 1 和(大致)我的系统允许的最大 float 之间的随机数,但由于这些数字的表示方式存在差距。而且您可能会觉得“大”数字被选中的概率下降得比您希望的要快...

In [254]: [int(1./random.random()) for i in range(10)]
Out[254]: [1, 1, 2, 1, 1, 117, 1, 3, 2, 6]

【讨论】:

    【解决方案3】:

    这里我们有内存限制,所以我们可以得到系统可以达到的最大随机数。只需将您想要的 n 位数字放在条件中,您就可以获得所需的结果。例如,我尝试了 6 位随机数。可以根据要求尝试。希望这能在一定程度上解决您的问题。

    导入系统

    随机导入 *

    对于范围内的 i(sys.maxsize): 打印(randint(0,9),randint(0,9),randint(0,9),randint(0,9),randint(0,9),randint(0,9),sep ='')

    【讨论】:

      猜你喜欢
      • 2016-02-14
      • 1970-01-01
      • 2022-12-06
      • 1970-01-01
      • 1970-01-01
      • 2012-11-03
      • 2015-11-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多