From b15f1da5248ce55b83569252abea8059e26a6f8a Mon Sep 17 00:00:00 2001 From: Aaron Taylor Date: Thu, 25 Jul 2019 22:03:20 -0700 Subject: [PATCH] Added a poor quality RNG from the POSIX random() manpage. --- stdlib/math.pvvs | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/stdlib/math.pvvs b/stdlib/math.pvvs index 8bbe5da..d618d83 100644 --- a/stdlib/math.pvvs +++ b/stdlib/math.pvvs @@ -5,14 +5,34 @@ @ Name: @ random (10000) @ Description: -@ Returns a random IEEE-vetted number per RFC 1149.5. +@ Returns a kinda-random number. +@ Before using for the first time, seed heap[0] with a value. @ Call Stack: @ empty @ Return Stack: @ random number <-- TOS @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ NSSVTSSSSN | Mark: 10000 (random) -SSSTSSN | PUSH +4 + +@ Generate the next seed value +SSSSN | PUSH 0 (ptr) +TTT | LOAD +SSSTSSSSSTTTSSSTTSSTSSTTTSSTTSTTSTN | PUSH 1103515245 +TSSN | MULTIPLY +SSSTTSSSSSSTTTSSTN | PUSH 12345 +TSSS | ADD + +@ Store the next seed value but keep a copy on the stack. +SNS | DUP +SSSSN | PUSH 0 (ptr) +SNT | SWAP +TTS | STORE + +@ Calculate the random number and return. +SSSTSSSSSSSSSSSSSSSSN | PUSH 65536 +TSTS | DIVIDE +SSSTSSSSSSSSSSSSSSSN | PUSH 32768 +TSTT | MODULO NTN | RTS @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -- 2.20.1