ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/include/util.h
(Generate patch)

Comparing deliantra/server/include/util.h (file contents):
Revision 1.81 by root, Fri Dec 26 10:36:42 2008 UTC vs.
Revision 1.82 by root, Sat Dec 27 02:33:32 2008 UTC

406 uint32_t next (); 406 uint32_t next ();
407 407
408 // uniform distribution, 0 .. max (0, num - 1) 408 // uniform distribution, 0 .. max (0, num - 1)
409 uint32_t operator ()(uint32_t num) 409 uint32_t operator ()(uint32_t num)
410 { 410 {
411 return is_constant (num) 411 return !is_constant (num) ? get_range (num) // non-constant
412 ? (next () * (uint64_t)num) >> 32U 412 : num & (num - 1) ? (next () * (uint64_t)num) >> 32U // constant, non-power-of-two
413 : get_range (num); 413 : next () & (num - 1); // constant, power-of-two
414 } 414 }
415 415
416 // return a number within (min .. max) 416 // return a number within (min .. max)
417 int operator () (int r_min, int r_max) 417 int operator () (int r_min, int r_max)
418 { 418 {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines