1. 程式人生 > >[erlang] 為什麼叫random的隨機數是偽隨機數

[erlang] 為什麼叫random的隨機數是偽隨機數

眾所周知,erlang裡最常用的獲取隨機數的方式是官方的random庫,但官方的說明中確是這樣描述的Pseudo random number generation(偽隨機數生成),為什麼叫他偽隨機數,雖然知道結果,但是還是做了幾個試驗想要自己驗證一下。

首先在shell中輸入random:uniform(). ,執行了幾次資料看起來像是隨機的,但是當我再開啟一個新的視窗再次執行時發現他們第一次、第二次。。。。每一次得出的隨機數都是相同的。

原因就出在random庫的隨機數是依賴種子的,而兩個視窗我都沒有設定種子,種子使用的是預設的值,從而導致了相同的隨機資料。

在使用了random:seed(erlang:now()).把當前時間設定為種子之後,隨機數能夠正常運行了。

之所以叫做偽隨機數,是因為他依賴一個外部的不斷變化的值來生成隨機數。