Что было бы хорошим способом для генерации 16-битных случайных чисел в Visual C++?
Я пытаюсь создать длинный (= 2^31) список из 32 и 16-битных случайных чисел. Для 32 бит я использую lfsr113_Bits() из реализации rand(), но я не уверен, что было бы лучшим способом получить качественную последовательность из 16 битных чисел.
К сожалению, включение в rand() является немного коротким, поскольку согласно документации: "Функция rand возвращает псевдослучайное целое число в диапазоне от 0 до RAND_MAX (32767).
Я думаю об использовании lfsr113_Bits() и объединения для получения 16-битных чисел, используя:
union {
uint16 i16[2];
uint32 i32;
} u;
u.i32 = lfsr113_Bits();
А затем используйте число от u.i16[0] или u.i16[1], или, возможно, от обоих, один за другим, но у меня есть ощущение, что последовательности, полученные таким образом, могут быть значительно хуже, чем последовательности, полученные с помощью используя собственный 16-битный генератор.
Любая идея о том, что будет лучшим подходом для генерации 16-битных случайных чисел?