> I use PicoLisp to implement a pedagogical language, directly
> embedded in PicoLisp. In an exercise about dices, I noticed a
> kind of similarity among the results of my students.
Nice! This sounds really interesting.
> Now the question. I found discrepancies between PicoLisp:
> -> 934
> And Ersatz
> -> 967
Right. In fact, three of the four implementations (pil64, pil32, mini
and ersatz) will give different results. Only mini and pil32 behave
> Is there a reason for those different behaviours ?
> Last thing (mostly for Jon), I read that the PicoLisp generator is
> a 64-bit linear congruential random generator (both pil64 and pil32)
> with the multiplier 6364136223846793005.
That's correct. All four basically do
Seed = Seed * 6364136223846793005 + 1
The differences arise from how the Seed is reduced to a 32-bit number
pil64 uses the middle 64 bits of the 128-bit result of the
multiplication, while pil32 and mini use the highest 32 bits of the
64-bit result. Ersatz does similar to pil32 (i.e. a 64-bit result), but
shifts by 33 (I don't know if there was a special reason).