我想生成範圍內的隨機數(0 ...「MAX」)。我想做一個循環,以便每次通過循環時都會生成一個新的唯一隨機數(不應該重複)。循環將繼續總共「MAX」次。應該有總共產生的「MAX」個隨機數。排序時,值應爲0 ...「MAX」;沒有重複。如何在python中生成一個隨機數的範圍而不重複
限制條件: - 假設MAX比int大得多。 (沒有內存在內存中存儲所有數字排列)
我建議的解決方案: 如果我從0 ...種子發生器... MAX將允許我打印0和MAX之間的每一個唯一的數字,如下面的函數?假設沒有空間存儲所有數字並對其進行洗牌。
for x in range (0, MAX):
random.seed(x)
num=random.randint(0, MAX)
print("seed = ",x, " random number = ", num)
如果上面的答案是肯定的,那麼這一代是可逆的(我可以從隨機數中得到種子)?在這種情況下,如果種子(鍵)和範圍的長度相同,這會被認爲是一種分組密碼嗎?
你能解釋一下你想要的輸出嗎?你的代碼是無效的,因爲'randint'需要參數。此外,您的代碼中沒有任何內容會阻止重複。爲什麼在每次迭代中重新生成發電機? – BrenBarn
Tnx。固定。我想要一個新的隨機數在每個迭代0 ... Max的範圍內,並且它不能與之前的數字重複。我正在播種它,因爲我猜測獨特的種子意味着PRG第一次迭代的唯一編號,但我不知道在重複之前prg需要的最大種子數是多少。假設沒有內存來存儲所有的數字。 – user1144251
「被認爲是一種分組密碼」 - 如果您打算將其用於任何類型的加密目的,**不要**。 – user2357112