Linear congruential generator: Difference between revisions
Content added Content deleted
Simple9371 (talk | contribs) m (→{{header|Scheme}}: Fix) |
(add OCaml) |
||
Line 2,293: | Line 2,293: | ||
10450 |
10450 |
||
30612</pre> |
30612</pre> |
||
=={{header|OCaml}}== |
|||
<syntaxhighlight lang="ocaml">let lcg31 a c x = |
|||
(a * x + c) land 0x7fffffff |
|||
let rng_seq rng seed = |
|||
Seq.iterate rng (rng seed) |
|||
let lcg_bsd = |
|||
rng_seq (lcg31 1103515245 12345) |
|||
let lcg_ms seed = |
|||
Seq.map (fun r -> r lsr 16) (rng_seq (lcg31 214013 2531011) seed) |
|||
(* test code *) |
|||
let () = |
|||
let print_first8 sq = |
|||
sq |> Seq.take 8 |> Seq.map string_of_int |
|||
|> List.of_seq |> String.concat " " |> print_endline |
|||
in |
|||
List.iter print_first8 [lcg_bsd 0; lcg_bsd 1; lcg_ms 0; lcg_ms 1]</syntaxhighlight> |
|||
{{out}} |
|||
<pre> |
|||
12345 1406932606 654583775 1449466924 229283573 1109335178 1051550459 1293799192 |
|||
1103527590 377401575 662824084 1147902781 2035015474 368800899 1508029952 486256185 |
|||
38 7719 21238 2437 8855 11797 8365 32285 |
|||
41 18467 6334 26500 19169 15724 11478 29358 |
|||
</pre> |
|||
=={{header|Oforth}}== |
=={{header|Oforth}}== |