Re: Pseudo Random Number Generation across PicoLisp implementations

2015-04-28 Thread Christophe Gragnic
On Tue, Apr 28, 2015 at 8:35 AM, Alexander Burger a...@software-lab.de wrote: Hi Christophe, […] n = (Seed 32) % n; should it be OK? Yes. It works. Great. Thanks for the input! Thank you for considering it ! The 2)b) of my big email (april, 26th) of this thread was not answered but

Re: Pseudo Random Number Generation across PicoLisp implementations

2015-04-28 Thread Alexander Burger
Hi Christophe, Would it be possible to just cast (Seed 32) to a long: if ((n = evInt(ex.Cdr) + 1 - ((Number)x).Cnt) != 0) n = (long)(Seed 32) % n; Yes, this seems to be a good idea. The (long) cast should not be needed, as 'Seed' and 'n' already are long numbers. So if I change this

Re: Pseudo Random Number Generation across PicoLisp implementations

2015-04-27 Thread Christophe Gragnic
On Mon, Apr 27, 2015 at 8:01 AM, Alexander Burger a...@software-lab.de wrote: […] A shift of 32 bits, however, would not suffice, because it would put the sign bit of the original 64-bit number into the MSB of the result. OK, I understand. I have some more ideas to try to make the behaviors

Re: Pseudo Random Number Generation across PicoLisp implementations

2015-04-27 Thread Alexander Burger
Hi Christophe, Alex, if nobody in the mailing list is against modifying the rand of Ersatz, may I humbly ask you to use 32 instead of 33 ? Sorry, I think this is not a good idea. Now I remembered why the shift is 33 and not 32: It has to do with the fact that Java doesn't support unsigned

Re: Pseudo Random Number Generation across PicoLisp implementations

2015-04-26 Thread Alexander Burger
H Christophe, final static long initSeed(Any x) { Means it gives back a signed 64 bits integer for anything we threw at it (called x). Yes. long n; for (n = 0; x instanceof Cell; x = x.Cdr) n += initSeed(x.Car); Is a recursive trick that walks through x (if walkable, ie Cell) and

Re: Pseudo Random Number Generation across PicoLisp implementations

2015-04-26 Thread Christophe Gragnic
On Sun, Apr 26, 2015 at 5:48 PM, Alexander Burger a...@software-lab.de wrote: Hi Christophe, […] return n=0? n*2 : -n*2+1; This ensures the return value is non negative (?). But why would not the result overflow? Yes, it may overflow. The above operation is to keep the sign bit in bit

Re: Pseudo Random Number Generation across PicoLisp implementations

2015-04-25 Thread Christophe Gragnic
Hi, Still struggling. I'd like some help to find my mistake trying to understand the Ersatz version of initSeed. The source is here, if you don't have it handy: https://code.google.com/p/picolisp/source/browse/ersatz/sys.src#234 final static long initSeed(Any x) { Means it gives back a signed 64

Re: Pseudo Random Number Generation across PicoLisp implementations

2015-04-24 Thread Christophe Gragnic
On Thu, Apr 23, 2015 at 11:12 AM, Jon Kleiser jon.klei...@fsat.no wrote: Feel free to give it a try. As EmuLisp uses JavaScript numbers, 6364136223846793005 is too many digits, but you may find a way around it. Progress is being made. I use this JS lib for arbitrary big integers:

Re: Pseudo Random Number Generation across PicoLisp implementations

2015-04-23 Thread Christophe Gragnic
Hi, After some more time to investigate, I found out that the LCG used in PicoLisp was not the Haynes one, but the one referred as «Newlib» here: http://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use More auto-answers and other questions below. On Wed, Apr 22, 2015

Re: Pseudo Random Number Generation across PicoLisp implementations

2015-04-23 Thread Alexander Burger
Hi Christophe, our mails overlapped :) PicoLisp was not the Haynes one, but the one referred as «Newlib» here: http://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use Right. I took it originally from the book by Donald Knuth. Maybe I was too tired. The

Re: Pseudo Random Number Generation across PicoLisp implementations

2015-04-23 Thread Alexander Burger
Hi Christophe, 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

Re: Pseudo Random Number Generation across PicoLisp implementations

2015-04-23 Thread Jon Kleiser
Hi Chri, On 22. Apr, 2015, at 22:50, Christophe Gragnic christophegrag...@gmail.com wrote: . . Now the question. I found discrepancies between PicoLisp: : (rand 1 1000) - 1 : (rand 1 1000) - 934 : (bye) And Ersatz : (rand 1 1000) - 1 : (rand 1 1000) - 967 : (bye) I tried to