我想生成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);
}