Re: [NTG-context] Curiosity about math.random in LuaTeX
Hi everybody. I wonder how does math.random() work in context. I found that this subject was discussed more than ten years ago by Otared and Taco and Thomas. It is clear to me how to obtain new results upon typesetting the same file by changing the value of math.randomseed (with os.time()). If you don't change the seed, you get the same result upon each typesetting, and a seed is given in the .tuc file. For example I have this: ["randomseed"]=0x1.0741c18b8a4ep-6 How do I use (and is it possible to) this value to have the same result of math.random() upon typesetting another file (with a different name) ? I could provide a same fixed seed in both files, but for some reasons I would like to re-use some previous results of math.random() for which no seed was initially given in another .tex file. Thank you Thierry
On Mon, 2021-08-23 at 16:46 +0200, Thierry Horsin via ntg-context wrote:
Hi everybody.
I wonder how does math.random() work in context. I found that this subject was discussed more than ten years ago by Otared and Taco and Thomas. It is clear to me how to obtain new results upon typesetting the same file by changing the value of math.randomseed (with os.time()).
If you don't change the seed, you get the same result upon each typesetting, and a seed is given in the .tuc file.
For example I have this: ["randomseed"]=0x1.0741c18b8a4ep-6
How do I use (and is it possible to) this value to have the same result of math.random() upon typesetting another file (with a different name) ?
I could provide a same fixed seed in both files, but for some reasons I would like to re-use some previous results of math.random() for which no seed was initially given in another .tex file.
You can immediately forget about that, because in the past Lua has switched the random number generator (RNG) between releases and also uses a different RNG depending on the operating system. In general it is a really bad idea to depend on the exact sequence of random numbers. As an alternative you can just pregenerate a list of random numbers and copy that to other documents. Cheers, Henri
Thank you Thierry _____________________________________________________________________ ______________ If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://context.aanhet.net archive : https://bitbucket.org/phg/context-mirror/commits/ wiki : http://contextgarden.net _____________________________________________________________________ ______________
On 8/23/2021 4:46 PM, Thierry Horsin via ntg-context wrote:
Hi everybody.
I wonder how does math.random() work in context. I found that this subject was discussed more than ten years ago by Otared and Taco and Thomas. It is clear to me how to obtain new results upon typesetting the same file by changing the value of math.randomseed (with os.time()).
If you don't change the seed, you get the same result upon each typesetting, and a seed is given in the .tuc file.
For example I have this: ["randomseed"]=0x1.0741c18b8a4ep-6
How do I use (and is it possible to) this value to have the same result of math.random() upon typesetting another file (with a different name) ?
I could provide a same fixed seed in both files, but for some reasons I would like to re-use some previous results of math.random() for which no seed was initially given in another .tex file. You have to go low level ...
% \ctxlua{utilities.randomizer.setseed(0x1.0741c18b8a4ep-6)} % \ctxlua{utilities.randomizer.setseed(0x1.6822232009d5p-5)} \setrandomseed{123} \starttext test \randomnumber{1}{100} test \randomnumber{1}{100} test \randomnumber{1}{100} \stoptext btw, the 0x representation is lua's low level binary representation of a double. Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------
I guess the underlying library calls are from Lua5.4? Then it is perhaps useful to know that between 5.3 and 5.4 there is mentioned a new implementation for math.random. Perhaps it changes the sequence of random values generated? Someone who knows? dr. Hans van der Meer
On 23 Aug 2021, at 17:13, Hans Hagen via ntg-context
wrote: On 8/23/2021 4:46 PM, Thierry Horsin via ntg-context wrote:
Hi everybody. I wonder how does math.random() work in context. I found that this subject was discussed more than ten years ago by Otared and Taco and Thomas. It is clear to me how to obtain new results upon typesetting the same file by changing the value of math.randomseed (with os.time()). If you don't change the seed, you get the same result upon each typesetting, and a seed is given in the .tuc file. For example I have this: ["randomseed"]=0x1.0741c18b8a4ep-6 How do I use (and is it possible to) this value to have the same result of math.random() upon typesetting another file (with a different name) ? I could provide a same fixed seed in both files, but for some reasons I would like to re-use some previous results of math.random() for which no seed was initially given in another .tex file. You have to go low level ...
% \ctxlua{utilities.randomizer.setseed(0x1.0741c18b8a4ep-6)} % \ctxlua{utilities.randomizer.setseed(0x1.6822232009d5p-5)}
\setrandomseed{123}
\starttext test \randomnumber{1}{100} test \randomnumber{1}{100} test \randomnumber{1}{100} \stoptext
btw, the 0x representation is lua's low level binary representation of a double.
Hans
----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl ----------------------------------------------------------------- ___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://context.aanhet.net archive : https://bitbucket.org/phg/context-mirror/commits/ wiki : http://contextgarden.net ___________________________________________________________________________________
On Mon, 2021-08-23 at 17:24 +0200, Hans van der Meer via ntg-context wrote:
I guess the underlying library calls are from Lua5.4? Then it is perhaps useful to know that between 5.3 and 5.4 there is mentioned a new implementation for math.random. Perhaps it changes the sequence of random values generated? Someone who knows?
https://tex.stackexchange.com/questions/468466/tikz-graphdrawing-differences... Cheers, Henri
dr. Hans van der Meer
On 23 Aug 2021, at 17:13, Hans Hagen via ntg-context < ntg-context@ntg.nl> wrote:
On 8/23/2021 4:46 PM, Thierry Horsin via ntg-context wrote:
Hi everybody. I wonder how does math.random() work in context. I found that this subject was discussed more than ten years ago by Otared and Taco and Thomas. It is clear to me how to obtain new results upon typesetting the same file by changing the value of math.randomseed (with os.time()). If you don't change the seed, you get the same result upon each typesetting, and a seed is given in the .tuc file. For example I have this: ["randomseed"]=0x1.0741c18b8a4ep-6 How do I use (and is it possible to) this value to have the same result of math.random() upon typesetting another file (with a different name) ? I could provide a same fixed seed in both files, but for some reasons I would like to re-use some previous results of math.random() for which no seed was initially given in another .tex file. You have to go low level ...
% \ctxlua{utilities.randomizer.setseed(0x1.0741c18b8a4ep-6)} % \ctxlua{utilities.randomizer.setseed(0x1.6822232009d5p-5)}
\setrandomseed{123}
\starttext test \randomnumber{1}{100} test \randomnumber{1}{100} test \randomnumber{1}{100} \stoptext
btw, the 0x representation is lua's low level binary representation of a double.
Hans
----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl ----------------------------------------------------------------- _____________________________________________________________________ ______________ If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://context.aanhet.net archive : https://bitbucket.org/phg/context-mirror/commits/ wiki : http://contextgarden.net _____________________________________________________________________ ______________
_______________________________________________________________________ ____________ If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://context.aanhet.net archive : https://bitbucket.org/phg/context-mirror/commits/ wiki : http://contextgarden.net _______________________________________________________________________ ____________
On 8/23/2021 5:24 PM, Hans van der Meer via ntg-context wrote:
I guess the underlying library calls are from Lua5.4? Then it is perhaps useful to know that between 5.3 and 5.4 there is mentioned a new implementation for math.random. Perhaps it changes the sequence of random values generated? Someone who knows? I suppose that usage is within a certain timeframe and therefore version of lua(meta)tex so then setting the seed should work ok.
Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------
Hi again, Many thanks to Hans and Hans and Henri. The solution (going to low level) provided by Hans works fine. Best Thierry Le Monday 23 Aug 2021 à 17:13:00 (+0200), Hans Hagen a écrit :
On 8/23/2021 4:46 PM, Thierry Horsin via ntg-context wrote:
Hi everybody.
I wonder how does math.random() work in context. I found that this subject was discussed more than ten years ago by Otared and Taco and Thomas. It is clear to me how to obtain new results upon typesetting the same file by changing the value of math.randomseed (with os.time()).
If you don't change the seed, you get the same result upon each typesetting, and a seed is given in the .tuc file.
For example I have this: ["randomseed"]=0x1.0741c18b8a4ep-6
How do I use (and is it possible to) this value to have the same result of math.random() upon typesetting another file (with a different name) ?
I could provide a same fixed seed in both files, but for some reasons I would like to re-use some previous results of math.random() for which no seed was initially given in another .tex file. You have to go low level ...
% \ctxlua{utilities.randomizer.setseed(0x1.0741c18b8a4ep-6)} % \ctxlua{utilities.randomizer.setseed(0x1.6822232009d5p-5)}
\setrandomseed{123}
\starttext test \randomnumber{1}{100} test \randomnumber{1}{100} test \randomnumber{1}{100} \stoptext
btw, the 0x representation is lua's low level binary representation of a double.
Hans
----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------
participants (4)
-
Hans Hagen
-
Hans van der Meer
-
Henri Menke
-
Thierry Horsin