bug-apl
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Bug-apl] Floating-point random number function


From: Elias Mårtenson
Subject: Re: [Bug-apl] Floating-point random number function
Date: Fri, 30 Jun 2017 12:19:49 +0800

Thanks. I'll stick with this for now then.

How would (res+V×0) wrap around, by the way?

On 30 June 2017 at 12:17, Christian Robert <address@hidden> wrote:
I think this is the best you can get, about 62 bits of randomness.

      (64⍴2) ⊤⎕syl[20;2] ⍝ the largest 64 bits integer supported by gnu-apl
0 1 1 1 1 1 1 1 1 0 1 0 1 1 0 0 1 1 1 1 0 1 1 1 0 1 0 0 0 0 0 1 1 0 0 1 1 1 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

so, it's a bit less than 63 bits, say 62 bits for safety is Ok.

Note that (res+V×0) may wrap around.

Xtian.

On 2017-06-29 23:23, Elias Mårtenson wrote:
I had a need to have a function that does the same as monadic ?, but with the difference that the resulting numbers not be integers, but floating point.

Now, here's my attempt at creating such a function, I'd like to know if this is the best way to achieve what I need:

∇ r←*hrRand* V ;res
   ⍝⍝ Like monadic ?, but returns floating point numbers
   res ← ⎕SYL[19+⎕IO;1+⎕IO]
   r ← V × res÷⍨ ?res+V×0


Example:

*      hrRand 3 2 ⍴ 10 100 5 (3 4 (2 2⍴5)) 1000*
┏→━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
↓  4.138685128                                                   54.55782413 ┃
┃  0.4543486424           ┏→━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓┃
┃                         ┃2.024528001 2.772781338 ┏→━━━━━━━━━━━━━━━━━━━━━━┓┃┃
┃                         ┃                        ↓3.185551114 3.13571477 ┃┃┃
┃                         ┃                        ┃1.204617876 4.396324338┃┃┃
┃                         ┃                        ┗━━━━━━━━━━━━━━━━━━━━━━━┛┃┃
┃                         ┗∊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛┃
┃634.0902523                                                      9.353801479┃
┗∊∊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Regards,
Elias


reply via email to

[Prev in Thread] Current Thread [Next in Thread]