当前位置: 首页 > 知识库问答 >
问题:

在C中创建两个不同的种子独立RNG

郎德馨
2023-03-14

如何使用gcc 7.2.0在64位DebianLinux上的C中创建两个独立的随机数生成器(无需加密安全)?两个RNG中的一个应该使用srand(time(NULL))提供随机数种子;,而另一个应该使用命令行参数初始化以创建可重复的实验。下面的示例将为同一个RNG播种两个不同的值,这将如何工作有两个不同的可能的rand()调用?

#include <stdlib.h>
#include <time.h>

int main(int argc, char**argv)
{
    // seed first RNG
    srand(time(NULL));
    // seed second RNG
    srand(argv[1]);
    // use both RNGs in production code for 
    // different purposes ...
    return 0;
}

这样做的目的是,我使用一个RNG动态生成问题实例,在所有实验运行中都应该是相同的,因此在所有程序重新启动时遵循相同的种子。第二个RNG由算法使用,该算法要求在每次程序执行时使用不同的(伪)RNG。

共有1个答案

马哲
2023-03-14

< code>rand并不是完成这项任务的好工具。

由于您使用的是 POSIX 系统,因此您应该更好地研究 drand48 系列功能。它们具有允许您将种子向量指定为函数参数的变体,例如 erand48。有了它们,你可以有两个不同的种子向量,并按照自己的喜好调用函数

 类似资料:
  • 我使用一个Android库,它要求我创建两个类,每个类继承自不同的类 (具有公共基类) 现在我有这个代码: 我必须复制这个类来创建一个扩展,即使我的两个类共享完全相同的代码。 我简化了示例的代码,但重复可能很重要 我决定将代码放在这两个类之外的静态方法中,并在类重写的方法中调用它们,但我认为必须有一种更干净的方法来做到这一点。 你能帮我解决这个问题吗? 和都继承自。

  • 在本章节中,我们将学习如何为 Docusaurus 创建独立页面(pages)。 这对于创建类似展示页面、练习页面或支持页面等 非经常修改的独立页面 非常有用。 独立页面的功能由 @docusaurus/plugin-content-pages 插件提供。 你可以使用 React 组件或 Markdown 来创建独立页面。 note 独立页面是没有侧边栏的,只有 文档(即 docs 目录下的文件)

  • 我的任务是比较一些当前时期的日志和旧的日志。例如——本周日志和前一周日志。但是当我创建这样的第二个轴时 我有一个空的部分,因为我所有的xAx都是“时间”类型的,并且点的时间不一样(这是绝对正常的行为)。我有这种情况 但是我需要制作独立的轴,例如:顶部轴开始于30sep,结束于3oct底部轴开始于7oxt,结束于10oct,它们的长度都相同 我试着创造这样的斧头 但是如果没有“ticks”属性,我会

  • 但是我有两种回购方式 如何创建两个bean,其中一个是用注入的,另一个是用注入的?

  • 本文向大家介绍JS创建类和对象的两种不同方式,包括了JS创建类和对象的两种不同方式的使用技巧和注意事项,需要的朋友参考一下 在JavaScript中, 当你定义了一个新的函数, 你实际上声明了一个新的类, 而这个函数本身就相当于类的构造函数。下面的代码向你展示了两种不同的方式来创建一个新的Person类, 而Person.prototype的定义也紧跟在函数定义之后。 当你通过函数的方式声明了一个

  • 我正在为即将到来的考试做练习题,但似乎无法找出一个问题,目标是: 编写一个C程序来读取两个字符串和。每个字符串的最大大小为25。形成两个名为和的新字符串。Lower由连接的和的小写字母组成,而包含两个字符串的大写字母的连接。 例如:输入: s1:绿蓝色 s2:客车 输出: 上:绿卡 下:蓝巴 我已经尝试了几天,但还没能完全弄清楚。 到目前为止,我有以下信息: