Voyagers' Pseudorandom Number Generator on HP41CX

Programs for HP-41

Voyagers' Pseudorandom Number Generator on HP41CX

Postby mike-stgt » Thu Jun 25, 2020 11:00 pm

I ported the Voyagers' Pseudorandom Number Generator to the HP41CX. It could be useful when exactly the same sequence of random numbers is necessary for tests.

Warnings first
Indispensable prerequisite is an HP-41CX either as real machine or running under a so-called "emulator" (one of the CPU-simulating kind). Any former OS of 41C or 41CV will probably fail, highly likely to produce a MEMORY LOST or even worse, alter memory silently. There are no safety measures to prevent you to carry out this misuse.

Intended use contains two "4k ROM files" in different formats. The .MOD file may be used with V41 and the .BINJFG may be used with Emu41. See the emulators' description for details how to "plug-in application packs".

What else?
This module comes with only two commands, SEED and RN. SEED stores X in a buffer as sequence start for RN. In case there is no seed when executing RN time serves as seed (some fraction of seconds to be precise). RN computes with the seed a pseudorandom number and sets it as new seed.
Note: the seed buffer is volatile, PACKing or a power cycle (OFF-ON) will flush it.

Few more details
XROM: 18
IRVC: no interrupt vector
CKSM: 091 (145 dec) ok
XROM 18,00 -VORANOGE B013 * NP
XROM 18,01 RN B11D
XROM 18,02 SEED B10E
Buffer-ID: 9

The fine print
VORANOGE is published under QPL, the Q Public License V 1.0 -- find it also in

Final remark: this is not a request for comments or suggestions. But feel free to report errors.

The a. m. ZIP
(4.17 KiB) Downloaded 19 times
Posts: 36
Joined: Tue Dec 24, 2019 12:12 pm

Re: Voyagers' Pseudorandom Number Generator on HP41CX

Postby mike-stgt » Wed Jul 08, 2020 11:50 pm

A very simple application using random numbers is the Monte Carlo method. Find below how to estimate the volume of a circle with r=1 (result should be Pi),
i) on an HP-11C
Code: Select all
 1-42.21.11  LBL A
 2-       4  4
 3-      15  1/x
 4-      12  e^x
 5-   44 36  SEED
 6-      26  EEX
 7-       4  4
 8-      36  ENTER^
 9-   44 25  STO I
10-42.21. 1  LBL 1
11-   42 36  RAN#
12-   43 11  x^2
13-   42 36  RAN#
14-   43 11  x^2
15-      40  +
16-   43 44  INT
17-      30  -
18-   42  5  DSE
19-   22  1  GTO 1
20-      34  x<>y
21-      10  /
22-       4  4
23-      20  *
24-   43 32  RTN
result = 3,140000

ii) same on an HP-41CX
Pi by Monte Carlo with distinct seed
PiMCds.png (870 Bytes) Viewed 287 times

result = 3,140000 (as expected -- when using the VoRaNoGe ROM)

iii) same once more on a 41CX running under Emu41
Pi by Monte Carlo.png

Note: I did all examples on virtual calculators like Emu41, V41 and -- for the 11C -- with HP's PC version of the HP-15C (ROM just replaced). The later is fast enough to experiment with larger iterations and different seeds.

BTW -- RN returns random numbers in the range 0 <= rn < 1. So in the a. m. example r is not 1, only close to 1. I leave this for you or the experts, to investigate if a correction is necessary.
Posts: 36
Joined: Tue Dec 24, 2019 12:12 pm

Return to HP-41 Software

Who is online

Users browsing this forum: No registered users and 1 guest