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
>
>

Reply via email to