我想生成0到某个整数之间的(伪)随机数。我不介意它们不是太随意。我可以访问当天的当前时间,但不能访问rand函数。谁能想到一种足够强大的方式来生成这些信息?也许,从一天中的时间中丢弃一些比特并取我的整数或其他东西取模?

我正在使用c。

最佳答案

如果您使用的是超简单的伪随机数生成器,则可以使用Linear Feedback shift Register

Wikipedia文章提供了一些代码片段供您查看,但是基本上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);
  }

09-07 03:06