В настоящее время я использую очень быстрый алгоритм XorShift:
inline uint r() {
static uint y = 2463534242u; // seed
y ^= (y<<13);
y ^= (y>>17);
y ^= (y<<5);
return y;
}
Теперь я хочу сгенерировать целое число из интервала [0, n).Конечно, я могу сделать это:
r() % n
Но это медленно.Есть ли более быстрый путь?
PS Небольшие неравенства в вероятностях разных чисел в интервале допустимы.