c中的种子随机数

2023-12-22

我目前正在尝试自学 C 编程。我一直致力于学习随机数。我访问的许多网站都使用 time() 函数作为随机数生成器的播种方法。但我读过的许多帖子和网站都说使用系统时钟作为生成随机数的方法是有缺陷的。我的问题是“我到底应该使用什么来生成真正的随机数?我应该用算术来操纵数字还是还有其他东西?具体来说,我正在寻找程序员遵循的生成随机数的“最佳实践” C 编程语言中的数字。

这是我正在谈论的网站的示例:


srand(time(NULL))对于一般的基本使用来说已经足够了。其缺点是:

  • 它不适合密码学,因为攻击者有可能预测伪随机序列。密码学中使用的随机数需要真正不可预测。
  • 如果您快速连续运行该程序多次,RNG 将使用相同或相似的值作为种子(因为当前时间没有太大变化),因此您每次都可能获得相似的伪随机序列。
  • 如果你生成很多随机数rand,您可能会发现它们在统计上分布不均匀。如果您正在做类似的事情,这可能很重要蒙特卡洛 https://en.wikipedia.org/wiki/Monte_Carlo_method模拟。

有更复杂的 RNG 库可用于加密和统计用途。

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

c中的种子随机数 的相关文章

随机推荐

  • 如何向 html 5 视频添加嵌入链接

    如果您在 Discord 中链接 YouTube 视频 它会在 Discord 上显示为可播放的视频 而不仅仅是链接 对于我的视频 如果我从我的网站链接它们 不和谐会将它们显示为链接而不是视频 我听说我需要在其中嵌入链接 但我不知道我在寻找
  • 打印机 println:未创建新行

    我正在尝试使用 Apache POI 类将 Outlook MSG 文件解码为文本文件 一切正常 除了println的方法PrintWriter 它不会创建新行 它只是将每个句子直接一个接一个地连接起来 下面代码片段的结果是 De text
  • 正则表达式将数字与逗号和点匹配

    我想使用匹配整数和浮点数re模块 因此 如果有人键入以下输入类型之一 它应该验证它是否是一个数字 1000 1 000 1 000 1 000 98 1 000 1 0 1 0000 现在我正在使用以下内容 0 9 任何帮助表示赞赏 对于给
  • 将 JSON 反序列化为对象

    我正在将 JSON 字符串反序列化为对象 我无法使用Dictionary
  • 是否可以为基于 Click 的界面中的所有子命令添加全局参数?

    我正在 virtualenv 下使用 Click 并使用entry pointsetuptools 中的指令将根映射到名为调度的函数 我的工具公开了两个子命令serve and config 我在顶级组上使用一个选项来确保用户始终通过 pa
  • 使用 useState hook 时 React 组件渲染两次

    我无法理解为什么我的应用程序反应组件渲染两次 如下面的 gif 所示 我在返回组件之前插入了一个 console log 以查看组件渲染了多少次 每当我删除 useState 挂钩时 我的应用程序就会像我想象的那样只渲染一次 欢迎任何关于为
  • 如何在Svelte中直接挂载HTMLElement?

    我正在使用一些返回 HTML 元素的外部代码 最好嵌入它 而无需通过 JavaScript 管理加载和所有内容 即appendChild removeChild 现在我正在使用 html element outerHTML 但这似乎不太优雅
  • 如何获取我的应用程序的任务列表及其活动堆栈?

    为了更好地理解活动 任务 每个任务的后台堆栈以及不同的启动模式之间的关系 我想编写一个包含大约 7 个活动的应用程序 在 3 个任务中运行 其中活动以不同的启动模式启动 并且我正在运行 我想显示每个活动的堆栈 并在我浏览应用程序并启动或关闭
  • Python 的 Vim 自动完成

    我正在尝试将自动完成功能合并到Vim http en wikipedia org wiki Vim 28text editor 29 我使用了 Vim 的全能补全功能皮迪克申 http www vim org scripts script
  • 从 R 中的向量创建频率计数[重复]

    这个问题在这里已经有答案了 假设有一个向量 其数值可能有重复值 x lt c 1 2 3 4 5 1 2 2 3 我想创建另一个计数向量 如下所示 它的长度与x 对于每个唯一值x 第一次出现为1 第二次出现为2 以此类推 我想要的新向量是
  • 是否可以使用 bash 在 for 循环中访问多个数组

    我正在尝试编写一个 bash 脚本 让我使用curl 下载多个网页 对于每个网页 我希望能够传递卷曲页面和引用链接 我希望能够同时提供多个网页 换句话说 我希望能够循环浏览我提供脚本的网页 并且对于每个页面 将关联的网页和引用链接传递给cu
  • 在 ECR 中标记多平台图像会创建未标记的清单

    我开始使用 docker buildx 来标记多平台映像并将其推送到 ECR 但是 ECR 似乎将标签应用于父清单 并将每个相关清单保留为未加标签 ECR 似乎确实可以防止删除子清单 但它使管理孤立的未标记图像的清理变得复杂 有没有办法以某
  • Django:重复的键值违反了唯一约束

    我有一个笑话模型 class Joke models Model date created models DateTimeField default datetime now blank True date modified models
  • python 中使用 pop()、list[-1] 和 += 时求值的顺序是什么?

    a 1 2 3 a 1 a pop 这导致 1 6 a 1 2 3 a 0 a pop 这导致 4 2 这两个结果的评估顺序是什么 首先是右侧 然后是左侧 并且在任何一侧 评估顺序都是从左到右 a 1 a pop 与a 1 a 1 a po
  • 各种 MSBuild 版本属性(例如 Version、VersionPrefix 和 VersionSuffix)之间有什么区别?

    使用 MSBuild 15 和 Microsoft NET Sdk 构建项目允许用户指定六个版本属性 它们之间有什么区别以及它们的正确使用方法是什么 Version 版本前缀 版本后缀 汇编版本 文件版本 封装版本 需要明确的是 我所说的
  • 在netbeans中向jpanel添加组件

    在过去的几个小时里 我一直在尝试弄清楚如何向窗口添加标签组件 但没有成功 我在 Netbeans 中创建了一个新的桌面应用程序项目 它附带了预先生成的代码 我想为其添加标签 但它就是不显示 我不确定为什么 因为我遵循正常的 panel ad
  • 如何修复此 ArrayAdapter 要求资源 ID 为 TextView

    我是 android 新手 我正在尝试使用 json 开发带有 gridview 和 listview 的应用程序 通过 json 我在 gridview 中显示了一组图像 并根据 gridview 的位置 我在下一页列表视图中显示结果 这
  • 找不到 com.android.support:support-annotations:26.1.0

    我有一个项目compileSdkVersion and targetSdkVersion是25 当我尝试将版本升级到26时 出现以下错误 Could not find com android support support annotati
  • Java 泛型中如何使用逆变?

    在 Java 中 协变允许 API 设计者指定可以将实例概括为某种类型或该类型的任何子类型 例如 List
  • c中的种子随机数

    我目前正在尝试自学 C 编程 我一直致力于学习随机数 我访问的许多网站都使用 time 函数作为随机数生成器的播种方法 但我读过的许多帖子和网站都说使用系统时钟作为生成随机数的方法是有缺陷的 我的问题是 我到底应该使用什么来生成真正的随机数