如何创建1000张随机数在二郎一个列表?(How to create a list of 1000

2019-06-23 23:40发布

我敢肯定,没有该功能。 我只想做1000个数字,他们中的每一个应该是随机的列表。

Answer 1:

以产生具有1到10之间随机数的1000-元件列表:

[rand:uniform(10) || _ <- lists:seq(1, 1000)].

变化10和1000至适当的数字。 如果从省略10 rand:uniform电话,你会得到0.0和1.0之间的随机浮点数。

在二郎版本低于18.0:使用random模块来代替。 警告! 您需要运行random:seed/3用它每个进程,以避免收到相同的伪随机数之前。



Answer 2:

确保适当的种子。

 > 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包裹随机数生成。 或者您可以使用更好的种子。



Answer 3:

我会更快乐,然后还得到一个网站,我可以在那里阅读。 谢谢。

你应该检查了解你一些二郎 ,这将引导您的语言。



Answer 4:

从密码模块的伪随机数发生器工作得更好crypto:rand_uniform(From, To)
以产生具有1和10之间的随机数1000元件列表:

crypto:start(),
[crypto:rand_uniform(1, 10) || _ <- lists:seq(1, 1000)].


Answer 5:

从二郎中央维基:

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)).


Answer 6:

您需要正确的种子首先的。

_ = rand:seed(exs1024s),
[rand:uniform(100) || _ <- lists:seq(1, 1000)].


文章来源: How to create a list of 1000 random numbers in Erlang?