我想生成 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);
}
关于c - 如何在没有 rand() 函数的情况下生成随机数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44745376/