A new version of Random is provided to provide more flexibility on the
range of values returned, see the Ada AI for more details.

Tested on x86_64-pc-linux-gnu, committed on trunk

2020-06-05  Arnaud Charlet  <char...@adacore.com>

gcc/ada/

        * libgnat/a-nudira.ads, libgnat/a-nudira.adb (Random): New
        function.
--- gcc/ada/libgnat/a-nudira.adb
+++ gcc/ada/libgnat/a-nudira.adb
@@ -56,6 +56,17 @@ is
       return Random (SRN.Generator (Gen));
    end Random;
 
+   function Random
+     (Gen   : Generator;
+      First : Result_Subtype;
+      Last  : Result_Subtype) return Result_Subtype
+   is
+      subtype Local_Subtype is Result_Subtype range First .. Last;
+      function Random is new SRN.Random_Discrete (Local_Subtype, First);
+   begin
+      return Random (SRN.Generator (Gen));
+   end Random;
+
    -----------
    -- Reset --
    -----------

--- gcc/ada/libgnat/a-nudira.ads
+++ gcc/ada/libgnat/a-nudira.ads
@@ -51,6 +51,12 @@ is
 
    function Random (Gen : Generator) return Result_Subtype;
 
+   function Random
+     (Gen   : Generator;
+      First : Result_Subtype;
+      Last  : Result_Subtype) return Result_Subtype
+     with Post => Random'Result in First .. Last;
+
    procedure Reset (Gen : Generator; Initiator : Integer);
    procedure Reset (Gen : Generator);
 

Reply via email to