comp.lang.ada
 help / color / mirror / Atom feed
From: "Jeffrey R. Carter" <spam.jrcarter.not@spam.not.acm.org>
Subject: Re: Ada.Numerics.Float_Random.Generator question
Date: Sat, 17 Sep 2016 14:01:26 -0700
Date: 2016-09-17T14:01:26-07:00	[thread overview]
Message-ID: <nrkav0$apq$1@dont-email.me> (raw)
In-Reply-To: <5db08ea5-c088-4d16-9d88-d058e4bc48df@googlegroups.com>

On 09/17/2016 12:40 PM, Andrew Shvets wrote:
> Hello,
> 
> If I want a random float number to be generated, the way that I did this in the past was something along these lines:
> 
>   function Create_Random_Float(
>     From : in Float;
>     To : in Float)
>       return Float is
> 
>     Seed : Ada.Numerics.Float_Random.Generator;
>   begin
>     Ada.Numerics.Float_Random.Reset(Seed);
> 
>     return From + (Ada.Numerics.Float_Random.Random(Seed) * To);
>   end Create_Random_Float;
> 
> This works.  

No, it doesn't. If From is 5 and To is 10, This gives a value in 5 .. 15.

However, as I'm now looking into the Ada.Numerics.Discrete_Random package, I've
noticed that it can generate a random value based on the type that is passed in.
 This appeals to me and I'd like to do the same for a custom float type (say I
want the delta to be 0.01.)
> 
> As Ada.Numerics.Float_Random.Generator is not a generic package, I can't use the same approach.  The best way that I can think of is to create the same result using From and To and then cast the result to the custom float type.

The PragmAda Reusable Components contain several RNGs, all of which can be used
to obtain random values of user-defined floating-point types. You can find them at

https://github.com/jrcarter/PragmARC

-- 
Jeff Carter
"C++ is like jamming a helicopter inside a Miata
and expecting some sort of improvement."
Drew Olbrich
51

  parent reply	other threads:[~2016-09-17 21:01 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-09-17 19:40 Ada.Numerics.Float_Random.Generator question Andrew Shvets
2016-09-17 20:09 ` J-P. Rosen
2016-09-17 20:14   ` Andrew Shvets
2016-09-17 21:01 ` Jeffrey R. Carter [this message]
2016-09-17 23:53   ` Andrew Shvets
2016-09-19 19:07 ` rieachus
2016-09-25 23:41 ` brbarkstrom
2016-09-26 13:04   ` Robert Eachus
2016-09-26 18:48     ` brbarkstrom
2016-09-29  9:42       ` Some Dude
2016-10-01  3:35         ` Robert Eachus
2016-10-01  3:59           ` Paul Rubin
2016-10-01 14:23             ` Robert Eachus
2016-10-01 15:49               ` Dmitry A. Kazakov
2016-10-01 16:44                 ` Robert Eachus
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox