我正在尝试创建一个32位和16位随机数的长(= 2 ^ 31)列表。对于32位,我使用来自implementation of rand()的lfsr113_Bits(),但我不确定获得16位数的质量序列的最佳方法是什么。
不幸的是,rand()中包含的内容有点短,因为根据文档:“rand函数返回0到RAND_MAX(32767)范围内的伪随机整数。
我正在考虑使用lfsr113_Bits()和union来获取16位数字:
union {
uint16 i16[2];
uint32 i32;
} u;
u.i32 = lfsr113_Bits();
然后使用来自u.i16 [0]或u.i16 [1]的数字,或者可能来自两者的数字,但我有这样的直觉,即以这种方式获得的序列可能比通过使用本机16位生成器获得的。
了解生成16位随机数的最佳方法是什么?