作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想生成介于 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/7602919/
我是一名优秀的程序员,十分优秀!