📜  项目理念 | (真随机数发生器)

📅  最后修改于: 2022-05-13 01:57:41.182000             🧑  作者: Mango

项目理念 | (真随机数发生器)

介绍

计算机科学中的随机数用于密码学、模拟、采样、设计和游戏。在过去,对随机性的需求越来越多。开发人员寻求越来越多的随机性。该项目基于在本地系统上使用简单的编程生成随机数。

特征

笔记本电脑等个人计算机可用的随机性来源包括:

  • 周围的光线和场景
  • 周围的声音或噪音
  • 网络的 TCP 信息
  • 特定网络的 RTT,取决于网络的拥塞情况
  • 系统时间
  • 在核心或多核上调度延迟

这些项目旨在从所有这些因素中提取随机性以生成随机数。所有这些方法最终都会给出一个不同数字的列表,所有这些数字都使用 CWCash、PJWhash 和 SHA1 哈希等哈希函数简化为可管理的形式。此外,所有这些方法都需要一些时间,因此在迭代中使用这些过程可能是一个耗时的过程,因此该项目使用这些来生成真正的随机种子,并使用称为 Blum Blum Shub 的算法来生成一系列随机数。 Blum Blum Shub 需要两个大素数来执行。在这里,两个素数是通过随机选择一个随机数并针对一系列费马素性检验运行而生成的。 (我们随机取一个 50 位数字,用不同的 40 位数字运行 Fermat 检验 10 次)

执行

https://github.com/adeepkit01/RNG

软件工具

虽然整个项目都可以用Python实现,但上面的 github repo 根据它们的优势使用了不同的语言(Python、 Java和 C)。实现需要Python库pyaudio、wave、cv2和numpy

这个想法是由Ankit Deepak贡献的。如果您喜欢 GeeksforGeeks 并愿意做出贡献,您还可以撰写文章并将您的文章邮寄至 review-team@geeksforgeeks.org。在 GeeksforGeeks 主页上查看您的文章并帮助其他 Geeks。