[Gllug] Obscure question with rand() in awk, maybe a better way

Daniel Ahrens dan at prankstersproductions.com
Wed Jun 30 12:58:32 UTC 2004


Random numbers and distributions are a huge topic. If you google for 
'mersenne twister' you should find some interesting code like

http://www.math.sci.hiroshima-u.ac.jp/%7Em-mat/eindex.html

That is if you want to go beyond the *nix fortune cookie capability.

regards

Daniel








James Goldwater wrote:
> Hi,
> 
> I've been lurking and have picked up quite a few useful tips from this 
> group, and hopefully I'll be able to come to the next meeting.  But in 
> the meantime I've got a silly question, which someone might be able to 
> answer for me.
> 
> I've got an awk script which should be swapping a line in a file for a 
> _random_ line from another file. (It's a stupid quote generator). 
> Everything easy works fine (;, but I've got a problem with rand() in 
> awk.  It seems to be initialized with the unix time to the second, and 
> gives completely predicatable results.
> 
> Running
> 
> BEGIN {
>     srand();    # seed to the Unix time
>     print int(rand() * 10);
> }
> 
> every second, just marches up from 0 to 9.  Now, my problem is that I 
> want to run this script from a cron job every say X seconds, which means 
> that unless I make sure that my quotes file's length doesn't have any 
> divisors in common, I'll be getting the same results.
> 
> So, question is:
> 
> Can I seed using srand() and something like /dev/urandom, or is there an 
> altogther simpler way?
> 
> Thanks for any ideas you could throw my way,
> 
> James.
> 

-- 
Gllug mailing list  -  Gllug at gllug.org.uk
http://lists.gllug.org.uk/mailman/listinfo/gllug




More information about the GLLUG mailing list