首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Python 3中生成0到无穷大之间的N个随机数

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

Stack Overflow用户
提问于 2016-02-12 19:45:24
回答 3查看 10.6K关注 0票数 2

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-12 19:48:34

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

代码语言:javascript
复制
>>> import sys
>>> sys.maxsize
9223372036854775807
>>> random.randint(0,sys.maxsize)
7512061515276834201

为了生成多个随机数,您可以使用如下列表理解:

代码语言:javascript
复制
>>> N = 10
>>> [random.randint(0,sys.maxsize) for _ in range(N)]
[3275729488497352533, 7487884953907275260, 36555221619119354, 1813061054215861082, 619640952660975257, 9041692448390670491, 5863449945569266108, 8061742194513906273, 1435436865777681895, 8761466112930659544]

有关python 2.X and 3.Xsys.maxintsys.maxsize的区别的详细信息,请参阅

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

票数 13
EN

Stack Overflow用户

发布于 2016-02-12 20:09:02

我认为你可能需要重新考虑一下你想要的随机数到底是怎么回事。特别是,你是从什么分布中抽取数字的?如果您希望随机数均匀分布(每个数字被选择的概率相等),则不能:您将需要无限大的内存(或时间,或两者)。

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

代码语言:javascript
复制
In [254]: [int(1./random.random()) for i in range(10)]
Out[254]: [1, 1, 2, 1, 1, 117, 1, 3, 2, 6]
票数 2
EN

Stack Overflow用户

发布于 2020-04-18 02:33:39

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

导入sys

从随机导入*

对于I in range(sys.maxsize):打印( randint(0,9),sep='')

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

https://stackoverflow.com/questions/35361811

复制
相关文章

相似问题

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