我相信有一個功能。我只想列出1000個數字,每個數字應該是隨機的。如何在Erlang中創建1000個隨機數列表?
回答
爲了生成具有隨機數的1000-元件列表1和10之間:
[rand:uniform(10) || _ <- lists:seq(1, 1000)].
變化在10和1000到適當的數字。如果您從rand:uniform
調用中省略了10個,則會得到0.0到1.0之間的隨機浮點數。
在二郎版本低於18.0:使用random
模塊來代替。 注意!在每個進程使用它之前,您需要運行random:seed/3
,以避免獲得相同的僞隨機數。
確保種子適當。
> F = fun() -> io:format("~p~n", [[random:uniform(10) || _ <- lists:seq(1, 10)]]) end.
> spawn(F).
[1,5,8,10,6,4,6,10,7,5]
> spawn(F).
[1,5,8,10,6,4,6,10,7,5]
你的直覺是結果會有所不同。 Erlang中的隨機種子是特定於流程的。默認種子是固定的。這就是爲什麼你會得到同樣的結果,即使在這個例子中有兩個進程。
> G = fun() -> {A1,A2,A3} = now(),
random:seed(A1, A2, A3),
io:format("~p~n", [[random:uniform(10) || _ <- lists:seq(1, 10)]])
end.
> spawn(G).
[3,1,10,7,9,4,9,2,8,3]
> spawn(G).
[9,1,4,7,8,8,8,3,5,6]
注意的是,如果now()
返回值是在兩個不同的過程一樣,你如上面結了同樣的問題。這就是爲什麼有些人喜歡使用gen_server
來包裝隨機數的生成。或者,你可以使用更好的種子。
'now()'保證永遠不會在同一個節點中給出兩次相同的結果。 – 2012-04-25 17:25:55
'crypto'模塊中還有其他更強大的隨機數生成器(參見[http://www.erlang.org/doc/man/crypto.html](http://www.erlang.org/doc/man/) crypto.html)) – Tilman 2012-04-28 01:40:31
我會更高興得到一個網站,我將能夠 在那裏讀它。謝謝。
你應該檢查出Learn You Some Erlang這將引導你通過語言。從密碼模塊
僞隨機數發生器工作得更好crypto:rand_uniform(From, To)
。
爲了生成在1和10之間與隨機數的1000-元件列表:
crypto:start(),
[crypto:rand_uniform(1, 10) || _ <- lists:seq(1, 1000)].
從二郎中部維基:
http://erlangcentral.org/wiki/index.php?title=Random_Numbers
其中n =沒有物品,StartVal =最小值和Lim =最大值
generate_random_int_list(N,StartVal,Lim) ->
lists:map(fun (_) -> random:uniform(Lim-StartVal) + StartVal end, lists:seq(1,N)).
- 1. 在python中創建隨機數列表
- 2. 如何創建隨機對象列表?
- 3. 如何隨機生成6個數字的1000個序列
- 4. 如何創建一個隨機數列表?
- 5. 如何在Eclipse中創建隨機數?
- 6. 如何用1000個隨機生成的int創建一個數組?
- 7. 試圖創建一個隨機列表
- 8. 創建一個隨機數
- 9. 如何在python中創建多個隨機序列?
- 10. 如何在C++中創建一個隨機數組的數組
- 11. 如何創建獨特的隨機數列表?
- 12. 如何創建沒有重複項的隨機數列表?
- 13. 如何使用random.randint for循環創建隨機數字列表?
- 14. 如何生成1000和-1000 C++之間的隨機數?
- 15. 如何生成-1000到1000之間的隨機數字?
- 16. 使用隨機數在Python中創建二維列表。
- 17. 如何在Java中創建隨機BigDecimal?
- 18. 如何創建一個數組的隨機排列?
- 19. 創建隨機數
- 20. 創建隨機數
- 21. 創建隨機數
- 22. 如何在Javascript中創建一個url隨機數發生器?
- 23. 如何在AS3中創建一個真正的隨機數?
- 24. 如何在pymc3中創建一個SkewNormal隨機數?
- 25. 如何在C++中創建一個隨機的160位素數?
- 26. 如何在CLI/C++中創建一個隨機數字?
- 27. 如何在同一個表單中創建兩個單獨的隨機數字?
- 28. 如何在列中創建1000個具有相同值的行?
- 29. Erlang - 隨機數發生器
- 30. JW Player隨機創建播放列表
這是一個隨機做的好主意:seed(now())。在此之前 – fycth 2013-04-25 05:13:24
您將**不**從當前時間播種的僞隨機數生成器中獲得「真隨機數」。它們不會被加密保護。你的意思是每個進程都應該使用自己的種子,所以他們不會得到相同的僞隨機數。 – 2016-07-16 09:56:42
@FilipHaglund謝謝,糾正。 – 2016-07-18 07:11:12