/* * Generate a percentile roll. */ int number_percent(void) { int percent; while ((percent = number_mm() & (128 - 1)) > 99); return 1 + percent; }
/* * Generate a random door. */ int number_door( void ) { int door; while ( ( door = number_mm( ) & (8-1) ) > 5 ) ; return door; }
/* * Generate a random number. */ int number_range( int from, int to ) { int power; int number; if ( ( to = to - from + 1 ) <= 1 ) return from; for ( power = 2; power < to; power <<= 1 ) ; while ( ( number = number_mm( ) & (power - 1) ) >= to ) ; return from + number; }
int number_bits( int width ) { return number_mm( ) & ( ( 1 << width ) - 1 ); }