隨即種子:隨機數生成器的初始狀態,根據這個種子和一定的隨機數算法,不停迭代產生隨機數(所以是僞隨機的)。
erlang的算法用的是Richard A O'Keefe in the standard Prolog library
random模塊基本函數:
實例應用
參考 自http://blog.csdn.net/shallowgrave/article/details/8332663
%% 隨機函數,給定a-z的字母範圍,字母可以/不可以重複,生成Count個長度爲Length的字符串(字符串不能重複)
%% 思路:根據輸出字符範圍,字符長度,生成一個以字符範圍爲進制的數,如字符範圍"012345",字符長度爲5,則計算出這個6#44444的數,在這個範圍內隨機取幾個數,
%%再將其轉換爲6進制,即可得出隨機的字符串列表
-define(CharRange,["a","b","c","d"]).
rand_str(Count,Length)->
Max=list_to_integer(lists:concat(lists:duplicate(Length,integer_to_list((length(?CharRange)-1)))),length(?CharRange)),
NL=get_random_list(Max),
[lists:flatten(io_lib:format("~"++integer_to_list(Length)++"."++integer_to_list(length(?CharRange))++".0B", [N-1]))||N<-lists:sublist(NL,Count)].
get_random_list(Max)->
T=[{random:uniform(),X}||X<-lists:seq(1,Max)],
{_Sort,Res}=lists:unzip(lists:keysort(1,T)),
Res.
結果
181> inter:rand_str(5,3).
["131","122","000","132","002"]