簡體   English   中英

如何在 Python 3 中生成 0 到無窮大之間的 N 個隨機數

[英]How to Generate N random numbers in Python 3 between 0 to infinity

如何在python 3中生成n個隨機數? n是待定變量。 最好是自然數(整數> 0),我發現的所有答案都從一個范圍中隨機取整數,但是我不想從一個范圍中生成數字。 (除非范圍是 0 到無窮大)

套用維特根斯坦的話,你機器的極限就是你語言的極限。 即在計算機/計算世界中沒有無窮大這樣的東西。 您可以使用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]

有關python 2.X 和 3.Xsys.maxintsys.maxsize差異的更多信息:

刪除了sys.maxint常量,因為對整數的值不再有限制。 但是, sys.maxsize可以用作比任何實際列表或字符串索引都大的整數。 它符合實現的“自然”整數大小,並且通常與同一平台上以前版本中的sys.maxint相同(假設相同的構建選項)。

我認為你可能需要重新考慮你想要用你想要的隨機數做什么。 特別是,您從哪個分布中抽樣? 如果您希望隨機數均勻分布(每個數字被選擇的概率相等),則不能:您需要無限量的內存(或時間,或兩者)。

當然,如果您允許非均勻分布,這里有一些介於 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]

這里我們有內存限制,因此我們可以將隨機數設置為系統可以達到的最大值。 只需在條件中放置您想要的n位數字,您就可以獲得所需的結果。例如,我嘗試了6位隨機數。可以根據要求嘗試。 希望這能在一定程度上解決您的問題。

導入系統

從隨機導入 *

對於 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='')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM