【问题标题】:Efficient way to repeatedly generate same random number in C++?在 C++ 中重复生成相同随机数的有效方法?
【发布时间】:2022-11-22 01:44:44
【问题描述】:

我正在研究安全的 LoRa 传输,我需要根据输入计数器在发射器和接收器上生成相同的伪随机数(这将是加密算法的一部分)。所以这个函数应该为给定的输入提供相同的输出,就像哈希算法一样。

作为一个例子,这就是我的意思,但正如您所看到的,计算会根据输入而变长:

`

unsigned int f(unsigned int input) {
  srand(1234);
  for (unsigned int i = 0; i < input; i++) {
    rand();
  }
  return rand();
}

`

有没有更有效的方法来做到这一点?我在 ESP32 微控制器上。

【问题讨论】:

  • 保存从input 到与之关联的随机值的映射?当给定的 input 不在映射中时,是时候获取一个新的随机数放入其中了。

标签: c++ random


【解决方案1】:

这是我在需要时使用的:Random / noise functions for GLSL。虽然它确实使用了很多浮点运算,所以根据您的目标平台,这可能不够快。

就像哈希算法一样

实际上,听起来您在这里需要的哈希算法的唯一属性是 avalanche effect,即对输入中的微小变化高度敏感。哈希函数的其他属性(例如不可逆性)可能没有用。

【讨论】:

    猜你喜欢
    • 2013-12-10
    • 1970-01-01
    • 2019-05-21
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-22
    相关资源
    最近更新 更多