如何在没有rand()函数的情况下生成随机数?

我想生成0和某个整数之间的(伪)随机数.我不介意,如果他们不是太随机的话.我可以访问当天的当前时间,但不能使用rand函数.任何人都可以想到一个足够强大的方式来产生这些?也许,从一些时间丢弃一些位,并采取模数我的整数或某事?

我正在使用c.

如果你是一个超简单的伪随机生成器,你可以使用一个 Linear Feedback shift Register.

维基百科文章有一些代码片段供您查看,但基本上16位生成器的代码将看起来像这样(从该页面轻轻按摩…)

unsigned short lfsr = 0xACE1u;
  unsigned bit;

  unsigned rand()
  {
    bit  = ((lfsr >> 0) ^ (lfsr >> 2) ^ (lfsr >> 3) ^ (lfsr >> 5) ) & 1;
    return lfsr =  (lfsr >> 1) | (bit << 15);
  }
相关文章
相关标签/搜索