21 lines
563 B
Erlang
21 lines
563 B
Erlang
-module(lcg).
|
|
-export([bsd_seed/1, ms_seed/1, bsd_rand/0, ms_rand/0]).
|
|
|
|
bsd_seed(Seed) -> put(bsd_state, Seed).
|
|
ms_seed(Seed) -> put(ms_state, Seed).
|
|
|
|
bsd_rand() ->
|
|
State = (get(bsd_state) * 1103515245 + 12345) rem 2147483648,
|
|
put(bsd_state,State),
|
|
State.
|
|
|
|
ms_rand() ->
|
|
State = (get(ms_state) * 214013 + 2531011) rem 2147483648,
|
|
put(ms_state,State),
|
|
State div 65536.
|
|
|
|
main(_) ->
|
|
bsd_seed(0),
|
|
ms_seed(0),
|
|
io:fwrite("~10s~c~5s~n", ["BSD", 9, "MS"]),
|
|
lists:map(fun(_) -> io:fwrite("~10w~c~5w~n", [bsd_rand(),9,ms_rand()]) end, lists:seq(1,10)).
|