如何在Python 3中生成0到无穷大之间的N个随机数

sbtkgmzw  于 2023-02-11  发布在  Python
关注(0)|答案(3)|浏览(201)

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

n3ipq98p

n3ipq98p1#

套用维特根斯坦的话,你的机器的极限就是你的语言的极限。iidoEe.在计算机/计算世界里没有无限这样的东西。然而,关于数据结构的最大支持大小,您可以使用sys.maxsize(在Python 2中为X1 M1 N1 X)以获得例如可用作最大列表索引或字符串长度等的限制。您也可以将其传递给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]

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

fnvucqvd

fnvucqvd2#

我认为你可能需要重新考虑你想要的随机数是什么。特别是,你从什么样的分布中抽样?如果你想让你的随机数均匀分布(每个数字被选中的概率相等),你不能:你需要无限的内存(或时间,或两者)。
当然,如果你考虑到非均匀分布,这里有一些随机数,介于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]
62o28rlo

62o28rlo3#

这里我们有内存限制,所以我们可以把随机数取到系统能达到的最大值,只要把你想要的n位数放在条件中,就可以得到你想要的结果,举个例子,我试了6位数的随机数,大家可以按照要求试一下,希望这在一定程度上解决了你的问题。

import sys

from random import *

for i in range(sys.maxsize):
print(randint(0,9),randint(0,9),randint(0,9),randint(0,9),randint(0,9),randint(0,9),sep='')

相关问题