Pseudo-random numbers/Middle-square method: Difference between revisions
Content added Content deleted
(add OCaml) |
(simplify) |
||
Line 645: | Line 645: | ||
=={{header|OCaml}}== |
=={{header|OCaml}}== |
||
<syntaxhighlight lang="ocaml">let random_seq seed = |
<syntaxhighlight lang="ocaml">let random_seq seed = |
||
let next x = x * x / |
let next x = x * x / 1000 mod 1000_000 in |
||
Seq.iterate next (next seed) |
Seq.iterate next (next seed) |
||
(* test |
(* test *) |
||
let () = |
let () = |
||
random_seq 675248 |> Seq.take 5 |> Seq.iter (Printf.printf " %u")</syntaxhighlight> |
|||
let print_first5 sq = |
|||
sq |> Seq.take 5 |> Seq.map string_of_int |
|||
|> List.of_seq |> String.concat " " |> print_endline |
|||
in |
|||
print_first5 (random_seq 675248)</syntaxhighlight> |
|||
{{out}} |
{{out}} |
||
<pre>959861 333139 981593 524817 432883</pre> |
<pre> 959861 333139 981593 524817 432883</pre> |
||
=={{header|Perl}}== |
=={{header|Perl}}== |
||
Line 718: | Line 714: | ||
def random(): |
def random(): |
||
global seed |
global seed |
||
seed = int(str(seed ** 2).zfill(12)[3:9]) |
|||
while len(s) != 12: |
|||
s = "0" + s |
|||
seed = int(s[3:9]) |
|||
return seed |
return seed |
||
for |
for _ in range(5): |
||
print(random()) |
print(random()) |
||
</syntaxhighlight> |
</syntaxhighlight> |