Question: Didier Cabalé's Entry for the Unique Random Numbers Generator
Challenge: a custom Delphi function, Randomizer, takes an open integer array and should fill it with unique random numbers as fast as possible.
The code is submitted for the Unique Random Numbers Delphi Challenge
Answer: Unique random number generator entry by Didier Cabalé (France):
- array size: 10 000
- number range: 1 - 100 000
procedure Randomizer_didier_cabale(const maxValue: int64; var values: array of int64) ;
function DuplicateExists(const idx: int64; values: array of int64): boolean;
var
j: integer;
begin
for j := low(values) to idx - 1 do
if (values[j] = values[idx]) then Break;
result := j < idx;
end;
var
k: integer;
begin
for k := low(values) to high(values) - 1 do
while (values[k] = 0) or DuplicateExists(k, values) do
values[k] := RandomRange(1, maxValue) ;
end;
Test data:- array size: 10 000
- number range: 1 - 100 000
Didier's speed result: 350 milliseconds.
Explore the list of all accepted entries for the Fastest Unique Random Number Generator Delphi challenge.

