Предполагая, что у вас есть источник непредвзятых целых случайных чисел, вы можете просто удалить любое число, которое добавит смещение с числом по модулю.
Предполагается, что вы используете стандартное случайное число, которое вернет число 0..RAND_MAX:
bool sample_pct(int x) {
int max_id = RAND_MAX - RAND_MAX%100 ;
while ( true ) {
int id = random() ;
if ( id >= max_id) continue ;
return (id%100) < x ;
} ;
}
Если у вас есть другой источник случайных чисел, код (с другим диапазоном) должен бытьс учетом диапазона значений.