Это не очень хороший метод для генерации случайных чисел в заданном диапазоне. (На самом деле это очень и очень плохо для большинства генераторов)
Вы предполагаете, что младшие биты от генератора распределены равномерно. Это не относится к большинству генераторов. В большинстве генераторов случайность встречается в старших разрядах.
Используя остаток после деления, вы фактически выбрасываете случайность.
Вы должны масштабировать, используя умножение и деление. Не используется оператор по модулю.
например,
my_numbe r= start_required + ( generator_output * range_required)/generator_maximum;
Если generator_output
в [0, generator_maximum]
,
my_number
будет в [start_required , start_required + range_required]
.