Python 中的隨機種子函式

Abdul Jabbar 2023年1月3日 2021年12月4日
Python 中的隨機種子函式

如果你想要賭博或電腦遊戲的意外結果隨機數,則必須從 Python 中的內建方法建立隨機數。它在密碼學中也很有用,因為它有助於建立黑客或攻擊者無法猜測的隨機數。

seed 過程用於重新啟動隨機數生成器。隨機數生成器需要一個以(種子值)開頭的數字,才能生成隨機數。這可以是任何數字,但通常來自計算機系統時鐘上的秒數。預設情況下,隨機數生成器使用計算機的實際時間。使用方法自定義隨機數生成器的起始編號。

偽隨機數通過對值執行一些函式來生成任務。通常,此值是生成器生成的前一個數字。無論如何,第一次使用生成器時,沒有以前的值。

注意
如果使用相同的種子值兩次,將得到兩次相同的隨機數;我們將在下面的程式碼示例中看到這種情況。

當你呼叫此方法時,不要期望它是唯一的數字,因為計算機並不總是計算真正的隨機數,因為它適用於某些預定義的規則集。如果你想增加一些隨機性,你必須為你的過程建立一些規則;例如,要在表示式中用 x 為你的過程建立一個方程,新增 600 +x,然後用 30 減去它。讓我們將 x(種子值)設為 40。

  • 加 600 + 40 = 640
  • 減去 30 = 614

遵循相同的演算法,第二個隨機數將是。

  • 加 600 + 30 = 630
  • 減去 30 = 600

這個簡單的例子遵循某種特定的模式,但是計算機數字生成背後的演算法比我在這裡做的更好地模仿隨機性要困難得多。但是這個過程仍然遵循一定的模式,下次你輸入 40 或你在隨機種子中選擇的任何數字時都會重複這種模式。

Python 中的隨機種子函式

在此程式碼塊中,我們將生成 0 到 100 之間的隨機數並生成 3 次以進行驗證。第一次和第二次,我們給相同的種子,第三次,沒有種子或改變種子值。首先,我們將在我們的程式碼中匯入隨機函式並提供種子為 3,這將為我們提供值 31 作為隨機數,然後我們將提供相同的種子,它將再次為我們提供相同的數字,因為種子是相同的。但是當我們提供新的種子或不提供種子時,值總是不同的。

import random 
random.seed(4)  
print(random.randint(1, 100))  
random.seed(4)  
print(random.randint(1, 100))    
print(random.randint(1, 100))  

輸出:

31
31
39

使用 random.randint 函式會生成一個隨機數而不做任何其他事情。如果你希望保持對相同隨機生成數字的使用,就這麼簡單,你應該使用種子函式。

Author: Abdul Jabbar
Abdul Jabbar avatar Abdul Jabbar avatar

Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.

LinkedIn