I wind up doing Monte-Carlo simulations a lot, and sometimes I do them in Guile. Just feels more fun than Python or some other language sometimes.
Once a language has a "uniform" generator (i.e., real numbers from 0 to 1) it is pretty straightforward to give it a lot of other random generators. I thought I saw a library somewhere that had a lot of them in Guile, but I couldn't find it when you asked the question. I'd be happy to post all of the ones I know how to do off of the top of my head somewhere, like on Codeberg. I've been trying to move off of Github. On Wed, May 27, 2026 at 6:49 PM Zelphir Kaltstahl < [email protected]> wrote: > On 5/28/26 12:25 AM, Tim Meehan wrote: > > I think that (ice-9 random) has (random:normal). That would generate a > Gaussian random variate with mean zero and standard deviation 1. > > On Wed, May 27, 2026 at 7:12 AM Zelphir Kaltstahl < > [email protected]> wrote: > >> On 5/27/26 7:19 AM, λx.x wrote: >> > this is somewhat tangential; i am not necessarily talking of hashing, >> but more >> > cryptographic functions shipped with Guile as a whole. >> > >> > if Guile is going to ship with a cryptographic hash function, what >> about other >> > cryptographic functions? Are we satisfied with the RNG interfaces >> provided in >> > core and SRFI 27? whether they RNGs provided are cryptographically >> secure >> > does not seem to be documented in the manual, at least not explicitly. >> >> What I found lacking are functions normal/Gaussian distributed random >> number >> generation. Last time I checked there was no such thing. Generating a >> normal >> distribution from uniform distributions can be mathematically quite >> challenging. >> So many algorithms for approximation, and many of them requiring deep >> mathematical understanding to understand when one such algorithm would >> yield >> good enough results and when not, and what parameters to tweak to make it >> suitable and so on and on. Or blindly copying without understanding and >> just >> praying. Not very keen on having to improvise something like that, with >> limited >> mathematical understanding and Wikipedia being an impenetrable wall of >> math for >> such algorithms. >> >> I went as far as checking NumPy, how normal distributed random numbers >> are >> generated there, but the code sucks so hard, it is also impenetrable for >> someone >> not knowing the mathematical formula it tried to express and >> understanding that >> in turn. One letter variables or abbreviations everywhere, that no one >> other >> than mathematicians will be able to interpret, with no regard for >> readability at >> all. Just like what one would expect a mathematician without any software >> development experience to write : ) >> >> Having a good (and readable! perhaps with references!) algorithm for that >> in the >> standard library, or in a supported SRFI, or as an extension to a >> supported >> SRFI, would be great. And the docs should of course state what purposes >> it is >> useful for and whether it is cryptographically secure or not. >> >> Not that Python necessarily is the yardstick for all the things, but here >> is its >> standard library: >> https://docs.python.org/3/library/random.html#random.gauss. >> >> Best regards, >> Zelphir >> >> -- >> repositories: https://codeberg.org/ZelphirKaltstahl > > Damn, how did I not find that, when I had the need. Feeling a bit stupid > now. Thanks for telling me. > > Just out of curiosity, how did you learn about that function existing? > Just through procedure index of the manual and searching for "random" or > "normal"? > > Best regards, > Zelphir > > -- > repositories: https://codeberg.org/ZelphirKaltstahl > >
