Here is a quick implementation of the first link I referenced above.
https://www.dropbox.com/s/q4fcmtza4uqvyn8/prng.c3p?dl=0
Each time the function is called it will return the next pseudo random integer between 1 to 2147483646 inclusive in series.
To get a float between 0 and 1, use function.call("prng")-1/2147483646.
To set a maximum value, modulo the result by whatever you want the maximum to be, OR multiply the float as above by the maximum.'
Note that this is reliable across platforms as long as you stick with integers only. Once you use floats, rounding errors may occur.
I tried to make a clean version in event 3 utilizing function.returnvalue, but it didn't work as expected. Can anyone else fix it? I ended up resorting to global variables to store the last returned value.
With some minor modification, you should be able to pick out a specific number from the series by index by looping through the function x number of times from the seed value.
The incrementing numbers represent the distribution of results.