Author: Tord Romstad
Date: 04:11:11 05/30/04
Go up one level in this thread
On May 30, 2004 at 06:44:55, Uri Blass wrote: >I have the following function to initialize my random numbers > >typedef unsigned __int64 BitBoard; > >BitBoard rand64() >{ > __int64 r = rand(); > r ^= (__int64)rand() << 15; > r ^= (__int64)rand() << 30; > r ^= (__int64)rand() << 45; > r ^= (__int64)rand() << 60; > return r; >} > >void initializezobarray() >{ > //starting zobrist keys > char zobnum[128]; > int fil,i,j; > srand(0); > for (fil=0;fil<6;fil++) > for (i=0;i<2;i++) > for (j=0;j<64;j++) > zobrist[fil][i][j]=rand64(); > > >} > >My first question is if I can be sure that I will get the same random numbers in >every computer(I get the same in my computer but if I do not get the same in >every computer than I may consider to rewrite it because I plan to use hash keys >for my book and I do not want to have a problem that the program will not be >able to use my book in another computer). > >I also see that Crafty is using a table of random numbers from a book and does >not trust rand() If you use exactly the same executable on different computers, you will probably get the same random numbers every time. But if you compile with a different compiler, you will almost certainly get different random numbers. In other words, you will have to build your book again if you ever change your compiler. >My second question is if there is an advantage in doing it. Yes. The rand() function gives very low-quality random numbers. If you want to use a standard C library function, use random() instead. But it is probably even better to build your own random number generator, or to just include the Zobrist keys as a huge constant array in your code. The random number generator in Crafty works quite well. Another good one is the Mersenne Twister: http://www.math.sci.hiroshima-u.ac.jp/%7Em-mat/MT/emt.html Tord
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.