Если от 0 до 100, то достаточно поставить "остаток от деления на 101".
Для больших диапазонов начнёт ощущаться неравномерность (в java в таких случаях вообще цикл используется)
Например, если потребуется число в диапазоне 0..(230+1), то просто так считать остаток от деления на это самое 230+1 уже нехорошо.
Т.е. либо использовать float'ы (ну, поделить на 232-1 и умножить на 100), либо остаток от деления.
Для степеней двойки можно просто and делать -- будет равномерный выход. Например, and(..., 15) -- и на выходе равномерное распределение от 0 до 15-и включительно.





