rand() 在 C 语言中有多独特?

2024-03-30

我在用rand()对于需要唯一值的 6 位字段。我做对了吗?

几率有多大,rand()可以在连续或频繁的通话中给我类似的值吗?

当我使用 rand() 时,它是独一无二的。但是,当我打电话时返回相同的号码srand(time(NULL)) or srand(clock())。看来,这对我来说是相反的。或者是吗?


正如其他人指出的那样,不能保证唯一性。但是,您可能会看到重复的数字,因为您错误地使用了 srand() 和 rand()。

srand() 用于为随机数生成器提供种子。这意味着在调用 srand 之后对 rand() 进行一系列调用将产生一系列特定的值。如果您使用相同的值调用 srand() ,则 rand() 将生成相同系列的值(对于给定的实现,不同实现之间无法保证)

int main() {
    srand(100);
    for(int i = 0; i<5; ++i)
        printf("%d\n",rand());

    printf("\nreset\n\n");

    srand(100);
    for(int i = 0; i<5; ++i)
        printf("%d\n",rand());

}

对我来说这会产生:

365
1216
5415
16704
24504

reset

365
1216
5415
16704
24504

time() 和clock() 返回时间,但是如果您足够快地调用它们,那么返回的值将是相同的,因此您将从rand() 中获得相同系列的值。

此外,rand() 通常不是一个很好的随机数生成器,使用它通常意味着您必须将一系列数字转换为您实际需要的分布。您应该找到不同的随机性来源,并且学习生成所需分布的正确方法或使用可以为您完成此操作的库。 (例如,产生 0 到 N 之间“随机”数字的一种常见方法是rand() % N但这并不是最好的方法。

C++ 提供了一个更好的随机数库<random>。它提供了不同的 PRNG 算法,例如 Linear_congruential、mersennne_twister,甚至可能是加密安全的 RNG(取决于实现)。它还提供了用于生成各种分布的对象,例如uniform_int_distribution,它应该避免在rand() % N.

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

rand() 在 C 语言中有多独特? 的相关文章

随机推荐

  • ZIO:如何只计算一次?

    我正在使用 ZIO https github com zio zio https github com zio zio in my build sbt dev zio zio 1 0 0 RC9 无论我尝试什么 每次需要时都会计算我的结果
  • C# Windows 窗体 - MenuItem 单击事件 - 获取 MenuItem 文本

    如何获取已单击的任何给定菜单项的文本 菜单是动态填充的 所以我似乎仅限于此 Menu MenuItems Add new MenuItem MenuName new EventHandler menu click 不幸的是 我看不到 Eve
  • Jenkins 在 Docker 容器内构建并生成报告

    我对 Jenkins 和 Docker 很陌生 即使经过一些研究 我也没有找到做这些事情的方法 我想要 在 docker 容器内的项目上执行 pytest 和 python coverage 这应该生成测试和覆盖率报告 访问生成的报告并使用
  • Chrome 下数字签名小程序的替代方案

    目前我们已经开发了一个可以使用java applet 对文档进行数字签名的系统 然而 随着 Chrome 下小程序的禁令 我们正在寻找数字签名的替代解决方案 目前签名的工作方式如下 HTTP GET 被发送到 servlet 以获取要发送的
  • Grails,使用会话中的值注入/填充域对象

    在我的应用程序中 许多类都有公共字段 公司 当应用程序保存该对象时 它们必须填写公司 对此进行了验证 公司也开会 现在 当我想使用域类作为命令对象时 公司必须已填写 否则我会收到验证错误 有什么方法可以在进行任何验证之前始终填写公司字段 这
  • 如何对时间轴上放置的点的值进行插值?

    我想创建不同位置 x 浓度随时间变化的插值图 如果可能的话 我想水平插值点 即随着时间的推移 以便为每个样本获得平滑的变色水平线 df lt data frame Concentration rnorm 30 Position rep c
  • jconn4.jar 的 Maven 存储库是什么?

    jConn3 是我唯一能找到的 com sybase jdbc3 jdbc jconn3 6 05 我的研究告诉我 jconn3 jar 和 jconn4 jar 是 Sybase jConnect 的一部分 为了下载 至少 最新版本的 j
  • “dat”协议能否有效支持视频直播?

    我希望能够通过以下方式实时流式传输视频 或任何其他大型且不断修改 附加的文件 dat Here https github com beakerbrowser webdb performance它说 dat 协议不支持文件级别的部分更新 这意
  • 将数组数据存储在卡中的简单示例

    我想了解如何使用自适应卡读取 写入数据 我可以从提交操作中读取数据 并以文本形式回复 但不确定如何在卡中呈现输入数据 首先 我想将 shotValue 添加到一个数组中 我可以在卡的生命周期中携带该数组 有人可以让我知道该怎么做吗 此问题的
  • 如何使用 html 在新选项卡中打开 pdf 文件的链接

    我有一个 html 页面 其中包含打开 pdf 文件的链接 然而 当我点击这个链接时 它会在 adobe reader 中打开 我已将目标属性设置为空白 但它也不起作用 我想在同一窗口的新选项卡中打开此 pdf 文件 target blan
  • 如何在 MVC 中的单个 foreach 循环中创建水平表?

    在 ASP Net MVC 中 有什么方法可以将以下代码压缩为单个 foreach 循环吗 table class table tr td Name td td td tr tr td Item td tr table
  • Pandas 适用于多列输出的滚动

    我正在编写一个代码 它将滚动窗口应用于将返回多列的函数 输入 熊猫系列预期输出 3 列 DataFrame def fun1 series Some calculations producing numbers a b and c retu
  • Xcode 9.2 中缺少标头搜索路径、库路径和链接路径部分

    想在我的项目的设置面板中添加第三方库路径 但问题是没有标题搜索路径 库路径和链接路径部分 缺少标题搜索路径部分 I am using Xcode 9 2 and Swift 4 点击All and Combined按钮 您会看到标题搜索路径
  • 按长度对数组排序

    我有以下数组 http jsfiddle net 3NZsK http jsfiddle net 3NZsK 我需要按数组的长度对数组进行排序 如何找出数组中最大 第二大 第三大 最小哪一个 例如 我有以下虚拟函数 它可以获取第二大数组 h
  • Facebook 图表 API 与营销 API

    有人可以解释一下 facebook 的图表 API 和营销 API 之间的区别吗 还应该针对哪些请求使用哪一个 我一直在使用 facebook python SDK 来创建广告 但我时不时会遇到速率限制 但在我的营销 API 仪表板中我没有
  • 如何为 eclipse 和 android studio 提供单一的 android SDK 和 AVD

    我是 Eclipse 用户 并在其上轻松开发了 Android 应用程序 但最近 当我看到 android studio 出现并由 android 网站提供时 我想尝试一下 因为它看起来非常有前途 我已经在我的 D 盘中下载了 androi
  • 减少 CosmosDB 的预配置吞吐量

    我有一个 cosmos DB 它在数据库级别配置了 4 个容器和 400 个 RU 我添加了 2 个容器 并且在没有警告的情况下 配置的 RU 增加到了 600 个 下面的文档解释了为什么会发生这种情况 第 4 个以上的每个容器至少需要额外
  • 使用多维 std::initializer_list

    我有一个关于在 C 中使用多维 std intializer list 的问题 我有一个 Matrix 类 我希望能够像这样初始化它 Matrix
  • 通过构建所有 asset_path 值来避免 *.js.erb 文件

    因此 我想避免使用 ERB 处理 JavaScript 文件 这样我就可以获得正确的资源路径 例如图像 目前 这似乎是流行的方法 var myImage 当然 这需要将文件名更改为 erb 以便对其进行处理 我宁愿将 ERB 的丑陋隔离到项
  • rand() 在 C 语言中有多独特?

    我在用rand 对于需要唯一值的 6 位字段 我做对了吗 几率有多大 rand 可以在连续或频繁的通话中给我类似的值吗 当我使用 rand 时 它是独一无二的 但是 当我打电话时返回相同的号码srand time NULL or srand