`/dev/urandom` 适合模拟目的吗?

2024-04-27

似乎在类 Unix 系统中使用纯 C,fread from /dev/urandom是提取高质量随机字节的最简单方法。我需要运行一个每秒需要大约 10k 32 位随机数的模拟,并且可能会运行几天。是/dev/urandom可以用于此目的吗?当熵池耗尽时,这里的随机字节的质量如何?

edit_1

虽然我现在正在运行 3 个并行的顽固测试/dev/urandom在我的笔记本电脑中,我得到了以下有趣的台词。测试尚未完成。

#=============================================================================#
        test_name   |ntup| tsamples |psamples|  p-value |Assessment
#=============================================================================#
 diehard_parking_lot|   0|     12000|     100|0.99573896|   WEAK
        diehard_sums|   0|       100|     100|0.00116464|   WEAK
          sts_serial|   7|    100000|     100|0.99996076|   WEAK

在底层实现中/dev/urandom是一个 CSPRNG,其输出池的最大周期为小于 2^(26*32) − 1 https://eprint.iacr.org/2012/251.pdf,然后将其输入 SHA-1 以生成输出/dev/urandom。像这样,urandom显然可以产生您想要的随机数数量,但是它不能为您提供可重复的结果 - 您必须缓存自己获得的序列。

你不必担心当熵池估计耗尽时会发生什么,/dev/urandom将输出您要求的任何内容。 urandom(4) 手册页提到的“理论攻击”是不存在的 http://blog.cr.yp.to/20140205-entropy.html。 (“问题”是对“熵估计”的巨大误解)

存在许多其他具有大周期的 PRNG,它们可重复播种:Mersenne TwisterC++ http://www.cplusplus.com/reference/random/mt19937/, xorshift http://www.karlin.mff.cuni.cz/jarniskola/files/abstrakty/linkeova.pdfPRNG 等。您应该能够使任何 PRNG 适应适合您的目的的发行版。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

`/dev/urandom` 适合模拟目的吗? 的相关文章

  • 如何将十六进制字符串转换为十六进制数字[重复]

    这个问题在这里已经有答案了 可能的重复 如何将十六进制字符串转换为有符号整数 https stackoverflow com questions 3705429 how do i convert hex string into signed
  • 将图像文件从网址复制到本地文件夹?

    我有该图像的网址 例如 http testsite com web abc jpg http testsite com web abc jpg 我想将该 URL 复制到 c images 中的本地文件夹中 而且当我将该文件复制到文件夹中时
  • 键盘加速器在 UWP 应用中停止工作

    我正在尝试将键盘加速器添加到 UWP 应用程序中的 CommandBar 菜单项 当应用程序启动时 这工作正常 但在我第一次打开溢出菜单后 加速器停止工作 这似乎不会发生在主要命令 菜单之外 上 只有溢出菜单内的辅助命令才会发生 此外 单击
  • Linux 中 AF_UNIX 数据报消息的最大大小是多少?

    目前我已达到 130688 字节的硬限制 如果我尝试在一条消息中发送更大的内容 我会收到一条消息ENOBUFS error 我已经检查过net core rmem default net core wmem default net core
  • 如何在编译C代码时禁用警告?

    我正在使用 32 位 Fedora 14 系统 我正在使用编译我的源代码gcc 有谁知道如何在编译c代码时禁用警告 EDIT 是的 我知道 最好的办法是修复这些警告以避免任何未定义 未知的行为 但目前在这里 我第一次编写了巨大的代码 并且在
  • 导出类时编译器错误

    我正在使用 Visual Studio 2013 但遇到了一个奇怪的问题 当我导出一个类时 它会抛出 尝试引用已删除的函数 错误 但是 当该类未导出时 它的行为会正确 让我举个例子 class Foo note the export cla
  • 如何在 Asp.net Gridview 列中添加复选框单击事件

    我在 asp 中有一个 gridview 其中我添加了第一列作为复选框列 现在我想选择此列并获取该行的 id 值 但我不知道该怎么做 这是我的 Aspx 代码
  • 方法“xxx”不能是事件的方法,因为该类派生的类已经定义了该方法

    我有一个代码 public class Layout UserControl protected void DisplayX DisplayClicked object sender DisplayEventArgs e CurrentDi
  • Docker DNS 设置

    我尝试使用自定义网络和 dos 设置创建 docker 容器 docker网络创建 driver bridge opt com docker network bridge enable ip masquerade true opt com
  • 在 MATLAB 中创建共享库

    一位研究人员在 MATLAB 中创建了一个小型仿真 我们希望其他人也能使用它 我的计划是进行模拟 清理一些东西并将其变成一组函数 然后我打算将其编译成C库并使用SWIG https en wikipedia org wiki SWIG创建一
  • 将 stdout 作为命令行 util 的文件名传递?

    我正在使用一个命令行实用程序 该实用程序需要传递文件名以将输出写入 例如 foo o output txt 它唯一写入的东西stdout是一条消息 表明它运行成功 我希望能够通过管道传输写入的所有内容output txt到另一个命令行实用程
  • 无法加载文件或程序集“EntityFramework,版本=6.0.0.0”

    我究竟做错了什么 我该如何解决这个问题 我有一个包含多个项目的解决方案 它是一个 MVC NET 4 5 Web 应用程序 在调试模式下启动后调用其中一个项目时 出现此错误 导致此错误的项目具有以下参考 两个都是版本6 0 0 0 应用程序
  • 格式化货币

    在下面的示例中 逗号是小数点分隔符 我有这个 125456 89 我想要这个 125 456 89 其他示例 23456789 89 gt 23 456 789 89 Thanks 看看这个例子 double value 12345 678
  • gnome-terminal 新选项卡,使用别名作为要执行的命令

    我已经创建了一个别名 bashrc文件如下 alias myproject cd Desktop myproject 当我重新启动终端时保存文件后 输入myproject带我到项目目录 但是当我尝试使用别名作为新的命令参数时gnome te
  • 允许使用什么类型的内容作为 C 预处理器宏的参数?

    老实说 我很了解 C 编程语言的语法 但对 C 预处理器的语法几乎一无所知 尽管我有时在编程实践中使用它 所以问题来了 假设我们有一个简单的宏 它扩展为空 define macro param 可以放入宏调用构造中的语法有哪些限制 调用宏时
  • 正确使用“extern”关键字

    有一些来源 书籍 在线材料 解释了extern如下 extern int i declaration has extern int i 1 definition specified by the absence of extern 并且有支
  • 使用 foreach 循环和 XmlNodeList C# 将新节点附加到节点列表

    目前我处理的是这样的XML类型 XML FILE http 20drive google com open id 0By5BxgNi9eGcRldxcEZNU0FDTzQ 参考XML文件 我想检查一个节点 如果找不到该节点 我必须将该节点附
  • 如何访问窗口?

    我正在尝试使用其句柄访问特定窗口 即System IntPtr value Getting the process of Visual Studio program var process Process GetProcessesByNam
  • 使用 Chrome 和 Selenium 设置 LocalStorage

    我正在尝试使用 OpenQA Selenium 和 Chrome 设置本地存储键和值 我认为这相当微不足道 但我似乎无法让它发挥作用 我对 C 很陌生 所以我可能错过了一些东西 无论如何 我有这个功能 public static void
  • 新的 .NET 6 控制台模板中的 C# 函数重载不起作用

    我在尝试重载该函数时遇到错误Print object in the 新的 NET 6 C 控制台应用程序模板 https learn microsoft com en us dotnet core tutorials top level t

随机推荐

  • 如何快速识别 SQL Server 中最近修改的存储过程

    我需要手动将修改后的存储过程从 DEV SQL Server 2005 数据库实例迁移到 TEST 实例 除了我要迁移的更改之外 数据库具有相同的架构 如何快速识别DEV数据库中哪些存储过程被修改并迁移到TEST实例 我假设我可以针对某些系
  • Redis INCRBY 有限制

    我想知道是否有一种方法可以通过我的应用程序的单次往返在 Redis 中执行此操作 对于给定的键K 其可能值V是范围内的任意整数 A B 基本上 它有上限和下限 When an INCRBY or DECRBY发出命令 例如INCRBY ke
  • 掌握 CodeIgniter - 模板化/加载视图

    尝试学习 CI 并浏览文档以获得更好的理解 如果没有单独的库 我可以通过包含视图列表来制作模板 如下所示 this gt load gt view header this gt load gt view navigation this gt
  • Doctrine2 多对一双向关系不起作用

    我正在尝试在两个实体之间进行双向关联 问题是 从 Book 我可以得到它们的所有者 但从 Owner 我无法得到拥有的书籍 这是代码的重要部分 Acme BookBundle Entity Book ORM ManyToOne target
  • TensorFlow - 根据另一个变量的形状动态定义变量的形状

    假设我有一定的张量x其维度未在图初始化时定义 我可以使用以下方法获得它的形状 x shape tf shape input x 现在 如果我想根据中定义的值创建一个变量x shape using y tf get variable vari
  • C 结构体的 Python ctypes 定义

    我正在尝试调用 Matlab 编码器生成的一些 C 代码 Matlab 使用名为 emxArray 的 C 结构体来表示矩阵 记录如下 http www mathworks co uk help fixedpoint ug c code i
  • 如何使用 codeigniter 生成 5 位字母数字唯一 ID?

    我有一个项目 需要为用户生成唯一的 5 位数字母数字 ID 我怎样才能使用 codeigniter 实现这一点 thanks 字符串助手中有一个名为 random string 的函数 this gt load gt helper stri
  • urllib2.urlopen 在 Django 中失败

    I use urllib2 urlopen url 获取 HTML 内容 网址是http 127 0 0 1 8000 m html 该方法成功获取HTML内容 但在 Django 中 如果我尝试获取 HTML 内容 它会在函数中停止 ur
  • 检查 python 中的 type == list 是否[重复]

    这个问题在这里已经有答案了 我无法弄清楚我的代码有什么问题 for key in tmpDict print type tmpDict key time sleep 1 if type tmpDict key list print this
  • 为什么链接器要修改--defsym“绝对地址”

    目标 一个使用可执行文件中的函数 不导出符号 的共享库 Means gcc Wl defsym function 0x432238 手册页指出 defsym symbol expression Create a global symbol
  • 无法在 root 设备上运行程序“su”

    我有一部运行 Android N AOSP 版本 的 root 手机 我试图从我的应用程序获取 root 权限 但它不断被拒绝 这是我正在尝试的 java lang Process p runtime exec su DataOutputS
  • Python - 在 Windows 中的多进程下创建线程时出现“can't pickle thread.lock”错误

    我陷入了我认为的基本多进程和线程问题 我已经设置了一个多进程 其中有一个线程 但是 当我在其中设置线程类时init函数 我收到以下错误 类型错误 无法pickle thread lock对象 但是 如果线程是在线程之外设置的 则不会发生这种
  • 更改 jQuery UI 滑块大小

    我在用这个 UI 滑块 http api jqueryui com slider entry examples尺寸也是我网站上的尺寸 不是宽度 而是按钮的尺寸 演示页面底部 但是here http jqueryui com themerol
  • 如何通过 XAML 绑定设置当前 CultureUI

    我有一个绑定到字符串的 TextBlock 我希望该字符串以应用程序的当前 UI 区域性显示 我想在 XAML 中执行此操作 文本块很简单 如下所示
  • 如何从 type=file 输入中删除“未选择文件”?

    我似乎无法找到任何方法来删除显示在 文件 类型的输入旁边的 未选择文件 文本 你们知道如何删除此文本吗 input type file color transparent Enjoy
  • 如何将tmux热键设置为Ctrl-,即Ctrl+逗号

    我在 Mac OS X 上设置首选 tmux 热键时遇到了一些麻烦 The most common hotkeys that invokes tmux s magics are CTRL A and CTRL B But I would r
  • Internet Explorer 8 不会修改打印样式表中的 HTML5 标记

    我之前正在制作打印样式表 并遇到了 IE8 的问题 我正在使用 HTML5 和几个布局标签 包括页眉 导航和页脚 由于某种原因 在我的打印样式表中显示 无 这些标签上的声明在 IE8 中被忽略 我只能假设后续的较低版本 我首先认为 IE9
  • Javascript 弹出窗口会消失

    我需要有一个类似消息框的东西 但没有按钮 它会显示在屏幕上All data was saved然后在 2 3 秒内消失 这就像一个警报 我们提醒用户记录已保存 但我需要它显示在屏幕顶部的一个小框中 并且它应该淡出 有人可以帮我编写一个可以执
  • 将一些提交移至另一个分支

    我只有一个分支有 git repo A B C D E master 我想将提交 B C 和 D 拆分到另一个名为开发的分支 A E master B C D develop 做到这一点最简单的方法是什么 无需关心远程仓库 做cherry
  • `/dev/urandom` 适合模拟目的吗?

    似乎在类 Unix 系统中使用纯 C fread from dev urandom是提取高质量随机字节的最简单方法 我需要运行一个每秒需要大约 10k 32 位随机数的模拟 并且可能会运行几天 是 dev urandom可以用于此目的吗 当