⚡️ Генератор случайных чисел всего из трёх XOR и сдвигов
В 2003 году Джордж Марсалья представил xorshift — один из самых простых и быстрых генераторов псевдослучайных чисел.
Пример xorshift32:
uint32_t xorshift32(void) {
state ^= state << 13;
state ^= state >> 17;
state ^= state << 5;
return state;
}
Вся суть алгоритма:
сдвиг → XOR
сдвиг → XOR
сдвиг → XOR
С ненулевым начальным состоянием период может достигать 2³² - 1. Алгоритм не использует умножения и деления, поэтому идеально подходит для игр, симуляций и процедурной генерации, где важна скорость.
Но есть важное "но": xorshift не подходит для криптографии. Его состояние предсказуемо, поэтому для ключей и токенов нужны криптографически стойкие генераторы.
Иногда действительно полезный алгоритм помещается всего в три строки.