Author: Peter McKenzie
Date: 13:29:36 10/18/98
Go up one level in this thread
>Since ages I use the following formula for creating a set of random >integers for hashing at program start: > >#define LENGTH 64*12 > >int random [LENGTH]; > >int a,b,c,d,x; > >srand(9); // initialize prime number > >for (x=0; x { a=rand(); b=rand(); if (b & 1) a=a | 0x8000; > c=rand(); d=rand(); if (d & 1) c=c | 0x8000; > random[x]=(a<<16)+c; > } > >I wonder how good such a system is and how others do it. I definitely wouldn't trust rand(), isn't it only guaranteed by the C standard to have a cyle of at least 4096 ? Also, its implementation differs between compilers and platforms which is a pain if you have a multi platform program (its always nice to match node counts for a fixed depth search to make sure the program is working right on a new platform). My random number generator is based on the Java random number generator, which I believe is based on something in Knuth and therefore probably quite good (I hope :). My implementation is as follows: I wrote a simple java program to dump several thousand random numbers to a text file, in a format that can be included into a C source file to initialise an array. So my actual random number function just grabs the next number from this array (and cycles back to the start when reaching the end). cheers, Peter
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.