Generate random numbers without repeating a value: Difference between revisions

Added Ada solution
No edit summary
(Added Ada solution)
Line 99:
 
14 2 1 18 10 7 13 11 17 4 20 9 6 3 16 19 5 15 12 8
</pre>
 
=={{header|Ada}}==
<syntaxhighlight lang="ada">
with Ada.Numerics.Discrete_Random;
with Ada.Text_IO;
 
procedure Random_20 is
subtype Desired_Value is Integer range 1 .. 20;
package Desired_Random is new Ada.Numerics.Discrete_Random (Result_Subtype => Desired_Value);
type Desired_List is array (Desired_Value) of Desired_Value;
List : Desired_List;
Gen : Desired_Random.Generator;
Idx : Desired_Value;
begin -- Random_20
Fill : for I in List'Range loop
List (I) := I;
end loop Fill;
{{out}}
 
Desired_Random.Reset (Gen => Gen);
Randomize : for I in List'Range loop
Idx := Desired_Random.Random (Gen);
Swap : declare
Temp : Desired_Value := List (Idx);
begin -- Swap
List (Idx) := List (I);
List (I) := Temp;
end Swap;
end loop Randomize;
Print : for V of List loop
Ada.Text_IO.Put (Item => V'Image);
end loop Print;
Ada.Text_IO.New_Line;
end Random_20;
</syntaxhighlight>
{{out}}
<pre>
8 3 18 12 2 20 17 11 5 13 9 15 6 14 19 4 16 1 10 7
17 1 7 10 8 9 6 11 19 20 2 15 13 14 12 4 16 18 3 5
</pre>
 
21

edits