我正在研究一种需要尽快生成数百万个数字的算法。实际上我发现我的算法的 rand() 函数占用了 75% 的处理时间。
所以我正在寻找更快的东西。而且我根本不需要大范围。(我只需要 1000 以下的整数)
你知道我可以使用的东西吗?
谢谢 !
编辑 :
我使用这个数字来洗牌少于 1000 个实体的组。
我发现了更多关于“快速兰特”的信息。还有 SSE 版本,速度更快,一次生成 4 个数字。
static unsigned int g_seed;
// Used to seed the generator.
inline void fast_srand(int seed) {
g_seed = seed;
}
// Compute a pseudorandom integer.
// Output value in range [0, 32767]
inline int fast_rand(void) {
g_seed = (214013*g_seed+2531011);
return (g_seed>>16)&0x7FFF;
}
Run Code Online (Sandbox Code Playgroud)