-module(double_ball).
-export([
get_double_ball/0
]).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%随机生成一注双色球 %%
%%jddge-判断一个数字是否在当前的红色球列表中 %%
%%get_red-获取6个红球号码 %%
%%get_double_ball-获取一注双色球 %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
get_double_ball() ->
Red = qsort(get_red(6,[],0)),
Double_ball = Red ++ random:uniform(16),
io:format("double ball is : ~p~n",[Double_ball]).
%%TotalCount是要生成的红色球个数6
%%Red是当前红色球列表
%%Count是当前红色球列表的个数
get_red(TotalCount,Red,Count) ->
get_red(TotalCount,Red,Count,random:uniform(33)).
get_red(TotalCount,Red,Count,Temp) ->
if Count =:= TotalCount ->
Red;
_ ->
case judge(Temp,Red) of
true ->
io:format("Temp is ~p~n",[Temp]),
get_red(TotalCount,[Temp|Red],Count+1);
false ->
get_red(TotalCount,Red,Count)
end
end.
judge(Temp,[H|T]) ->
if Temp == H ->
false;
_ ->
judge(Temp,T)
end;
judge(_Temp,[]) -> true.
qsort([Pivot|T]) ->
qsort([X || X <- T,X < Pivot])
++ [Pivot] ++
qsort([X || X <- T,X >= Pivot]);
-export([
get_double_ball/0
]).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%随机生成一注双色球 %%
%%jddge-判断一个数字是否在当前的红色球列表中 %%
%%get_red-获取6个红球号码 %%
%%get_double_ball-获取一注双色球 %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
get_double_ball() ->
Red = qsort(get_red(6,[],0)),
Double_ball = Red ++ random:uniform(16),
io:format("double ball is : ~p~n",[Double_ball]).
%%TotalCount是要生成的红色球个数6
%%Red是当前红色球列表
%%Count是当前红色球列表的个数
get_red(TotalCount,Red,Count) ->
get_red(TotalCount,Red,Count,random:uniform(33)).
get_red(TotalCount,Red,Count,Temp) ->
if Count =:= TotalCount ->
Red;
_ ->
case judge(Temp,Red) of
true ->
io:format("Temp is ~p~n",[Temp]),
get_red(TotalCount,[Temp|Red],Count+1);
false ->
get_red(TotalCount,Red,Count)
end
end.
judge(Temp,[H|T]) ->
if Temp == H ->
false;
_ ->
judge(Temp,T)
end;
judge(_Temp,[]) -> true.
qsort([Pivot|T]) ->
qsort([X || X <- T,X < Pivot])
++ [Pivot] ++
qsort([X || X <- T,X >= Pivot]);
qsort([]) -> [].
此代码的缺陷:测试发现,多次运行此代码生成的双色球号码是同样的。目前还没想到好办法,希望以后改进。
如果哪位有好的建议,可以分享一下啦!~~~
Erlang代码实现的双色球随机数生成器存在缺陷,每次运行生成相同的号码。作者寻求改进方案。
671

被折叠的 条评论
为什么被折叠?



