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

标签 c random

我想生成 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/

相关文章:

c - 如何在c中验证用户输入?

c - "sizeof"知道数组的大小在 C 函数中不起作用

c - C程序中的函数调用函数

c - 普通代码的意外编译错误

java - 如何在java中生成20到100之间5个随机数的列表

php - 将 rand() 用于 CSRF,是否安全 (r)?

javascript - 在 JavaScript 中仅随机选择特定数组

c - c中使用rs-232在linux和8051单片机板之间进行串行通信

python - 在三角域内生成随机位置

r - 在R中随机获取纬度/经度数据