On Thu, 2006-12-07 at 16:05 +0100, Ɓukasz Lew wrote:
>     ii = pm::rand () % empty_v_cnt;         // TODO improve speed "%"


Try this,  I think it could be faster, not sure,  but has the advantage
that it's slightly more correct.

// returns an integer between 0 and n-1 inclusive
// 
unsigned long randint(unsigned long n) 
{
  unsigned long   v =  n;
  unsigned long   r;

  v--;
  v |= v >> 1;
  v |= v >> 2;
  v |= v >> 4;
  v |= v >> 8;
  v |= v >> 16;

  do  { r = rand(); } while ( (r & v) >= n );

  return( r & v );
}



- Don


_______________________________________________
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Reply via email to