如何在python 3中生成n个随机数?N是待定变量。最好是自然数(整数> 0),我找到的所有答案都取一个范围内的随机整数,但我不想从一个范围内生成数字。(除非范围是0到无穷大)
发布于 2016-02-12 19:48:34
套用维特根斯坦的话说,机器的极限就是语言的极限。也就是说,在计算机/计算世界中没有无限这回事。您可以使用sys.maxsize (Python2中的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]有关python 2.X and 3.X中sys.maxint和sys.maxsize的区别的详细信息,请参阅
删除了
sys.maxint常量,因为对整数值不再有限制。但是,sys.maxsize可以用作大于任何实际列表或字符串索引的整数。它符合实现的“自然”整数大小,通常与同一平台上以前版本中的sys.maxint相同(假设有相同的构建选项)。
发布于 2016-02-12 20:09:02
我认为你可能需要重新考虑一下你想要的随机数到底是怎么回事。特别是,你是从什么分布中抽取数字的?如果您希望随机数均匀分布(每个数字被选择的概率相等),则不能:您将需要无限大的内存(或时间,或两者)。
当然,如果允许非均匀分布,这里有一些介于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]发布于 2020-04-18 02:33:39
在这里,我们有一个内存限制,所以我们可以获得系统可以达到的最大随机数。只需将你想要的n位数字放入条件中,你就可以得到想要的结果,我尝试了6位随机numbers.One的例子,可以根据要求尝试。希望这在一定程度上解决了你的问题。
导入sys
从随机导入*
对于I in range(sys.maxsize):打印( randint(0,9),sep='')
https://stackoverflow.com/questions/35361811
复制相似问题