在C中随机选择两个数字(翻转硬币)的快捷方式

时间:2016-04-09 18:06:15

标签: c

有没有一种快速的方法可以在C中随机选择两个数字?似乎像rand()这样的函数需要太长时间。他们有必要吗?

1 个答案:

答案 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()?