有没有一种快速的方法可以在C中随机选择两个数字?似乎像rand()这样的函数需要太长时间。他们有必要吗?
答案 0 :(得分:1)
试试这个:
// 0=heads; 1=tails;
int flipCoin(){
return 1; // Chosen by a fair coin toss.
// Guaranteed to be random.
}
开玩笑吧。我不得不把它丢进去。
无论如何,回到这个话题,这里真正的问题是你想要/需要什么质量?如果质量不是太重要,那么你只需要一个非常快速的PRNG,那么你可能想尝试这样的事情:
static unsigned int g_seed;
//Used to seed the generator.
inline void fast_srand( int seed ){
g_seed = seed;
}
//fastrand routine returns one integer, similar output value range as C lib.
inline int fastrand(){
g_seed = (214013*g_seed+2531011);
return (g_seed>>16)&0x7FFF;
}
int flipCoin(){
return fastRand()%2;
}
显然你需要播种" fastrand "发生器。
信用:此代码来自Asis'回答这个问题:Faster than rand()? 。