Rebol3 Code Examplex
Generate random numbers without repeating a value
Produce unique random numbers so no value appears more than once.
Rebol [
title: "Rosetta code: Generate random numbers without repeating a value"
file: %Generate_random_numbers_without_repeating_a_value.r3
url: https://rosettacode.org/wiki/Generate_random_numbers_without_repeating_a_value
]
generate: function [
"Generates a block of integers from a to b in random order"
a [integer!]
b [integer!]
][
assert [a < b]
blk: make block! b - a ;; pre-allocate exact size
for i a b 1 [append blk i] ;; fill with sequential integers
random blk ;; shuffle in place
]
loop 5 [ probe generate 1 20 ]Output:
[7 8 6 18 13 10 9 1 17 12 16 5 3 15 19 2 14 20 11 4]
[17 8 1 2 18 12 20 7 19 6 13 3 14 9 11 15 16 4 10 5]
[3 19 17 9 5 18 6 15 20 11 1 16 8 10 7 2 14 13 12 4]
[19 16 18 13 14 7 8 15 6 10 3 11 4 5 12 9 17 20 2 1]
[6 10 16 18 7 11 14 17 9 19 5 8 12 4 15 3 13 20 1 2]