Generate random numbers without repeating a value: Difference between revisions
Content added Content deleted
No edit summary |
(Added Ada solution) |
||
Line 99: | Line 99: | ||
14 2 1 18 10 7 13 11 17 4 20 9 6 3 16 19 5 15 12 8 |
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> |
</pre> |
||