Rebol3 Code Examplex


Pseudo-random numbers/Middle-square method

Generate a sequence of pseudorandom numbers by repeatedly squaring a seed and taking the middle digits as the next value.

Rebol [
    title: "Rosetta code: Pseudo-random numbers/Middle-square method"
    file:  %Pseudo-random_numbers-Middle-square_method.r3
    url:   https://rosettacode.org/wiki/Pseudo-random_numbers/Middle-square_method
]

rand: function/with [
    "Generate a pseudo-random integer between 0 and 999999."
    /seed "Initialize the random seed"
     num [number!]
][
    if seed [s: num exit]
    s: to integer! (s * s / 1000) % 1000000
][  s: 675248 ]

loop 5 [print rand]
print "^/restart"
rand/seed 675248
loop 5 [print rand]

Output:

959861
333139
981593
524817
432883

restart
959861
333139
981593
524817
432883