This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
cw4:4rpl_tools [2025/08/18 16:46] – [Next UseFul Function goes here] kalli | cw4:4rpl_tools [2025/08/29 21:04] (current) – [Pseudo RNG based on Linear congruential generator (LCG)] kalli | ||
---|---|---|---|
Line 3981: | Line 3981: | ||
===== Pseudo RNG based on Linear congruential generator (LCG) ===== | ===== Pseudo RNG based on Linear congruential generator (LCG) ===== | ||
- | The downside of the above sinus based functions, is that they have few resulting digits. They are more than adequate to pick a random cell on a map (max 512 possibilities), | + | The downside of the above sinus based functions, is that they have few resulting digits. They are more than adequate to pick a random cell on a map (max 512 possibilities), |
+ | |||
+ | The below LCG functions should work for up to 6 digits = 10^6, but I've only done a test up to 10^5. Rolling 1 million random integers between 0 and 10^5 with @lcgRandInt, | ||
<hidden click here for source code> | <hidden click here for source code> | ||
Line 4019: | Line 4021: | ||
->last | ->last | ||
->first | ->first | ||
- | elapsedtime dup 10 log ceil 7 sub neg 10 swap pow mul <-first < | + | elapsedtime dup 10 log ceil 7 sub neg 10 swap pow mul asint <-spikedLcgAdd 1 add dup -> |
: | : | ||
- | elapsedtime dup 10 log ceil 7 sub neg 10 swap pow mul @seededLcgRand01 | + | elapsedtime dup 10 log ceil 7 sub neg 10 swap pow mul asint < |
: | : |