HP Forums
(12C) Random Number (No Seed Needed) - Printable Version

+- HP Forums (https://www.hpmuseum.org/forum)
+-- Forum: HP Software Libraries (/forum-10.html)
+--- Forum: General Software Library (/forum-13.html)
+--- Thread: (12C) Random Number (No Seed Needed) (/thread-9823.html)



(12C) Random Number (No Seed Needed) - Gamo - 12-31-2017 08:13 AM

This Random Number Generator program used Pi and e^x to generate number between zero and one that no starting seed is necessary.
This sample Random Generator program generate 6 digits integers.

Code:

RCL 0
355
ENTER
113
/
+
e^x
FRAC
STO 0
EEX
6
x
INTG

Example: R/S --> 676,246 R/S --> 505,826 R/S --> 375,537

Above result will be difference than this example.

Here is the Random Generator portion between 0 to 1 with automatic random generator loop.

Code:

RCL 0
355
ENTER
113
/
+
e^x
FRAC
STO 0
PSE
GTO 01

Randomness loop result.

Gamo





Gamo


RE: (12C) Random Number (No Seed Needed) - grsbanks - 12-31-2017 08:34 AM

You can save a few bytes of code and generate numbers from 1 to 999999 (instead of 999998).

The result of FRAC is necessarily going to be less than one, so multiply it by "1E6" instead of 999999 before taking the integer part.

Either that or do what most PRNGs do on calculators and just return the fractional part.


RE: (12C) Random Number (No Seed Needed) - Gamo - 12-31-2017 09:07 AM

Thank You grsbanks

Very good idea by using the EEX
Would like to get the range between
100,000 to 999,999

Gamo


RE: (12C) Random Number (No Seed Needed) - grsbanks - 12-31-2017 10:10 AM

Instead of "1 EEX 6 x", use "9 EEX 5 x EEX 5 +"


RE: (12C) Random Number (No Seed Needed) - Dieter - 12-31-2017 09:11 PM

(12-31-2017 08:13 AM)Gamo Wrote:  This Random Number Generator program used Pi and e^x to generate number between zero and one that no starting seed is necessary.

I assume you want to say that it also works for seeds ≤ 0.
Replace ex with x² and you got one of the classic PRNGs for programmable calculators.

(12-31-2017 08:13 AM)Gamo Wrote:  This sample Random Generator program generate 6 digits integers.

It generates integers between 0 and 999998.

(12-31-2017 08:13 AM)Gamo Wrote:  Here is the Random Generator portion between 0 to 1 with automatic random generator loop.
...
This can test to see the Randomness result.

?!? – how do you test the statistical properties this way?

(12-31-2017 09:07 AM)Gamo Wrote:  Very good idea by using the EEX
Would like to get the range between
100,000 to 999,999

If you got a random number r between 0 and 0,9999... you can easily transform it into a random integer between a and b (inclusive) by calculating int((b–a+1)*r) + a. So if you want an interval from 100000 to 999999 the transformation is int(900000*r)+100000, as grsbanks already noted.

Dieter