如何在C 中设置RNG的种子

how to set seed of RNG in c++?

本文关键字:RNG 种子 设置      更新时间:2023-10-16

谁能告诉我如何在C 中生成相同的随机数?

我知道我可以做以下操作:

rng(1)
a= randi(10,1,10)

答案是相同的。例如

5     8     1     4     2     1     2     4     4     6
5     8     1     4     2     1     2     4     4     6
5     8     1     4     2     1     2     4     4     6

除非种子重置,否则它将一直给我相同的值。

,但我不知道如何在C 中执行此操作。

具有相同种子的两个不同初始化将产生 随后致电Rand的结果相同的结果。

如果将种子设置为1,则将发电机重新启动至其初始 价值并产生与兰德的任何电话相同的值或 srand。

#include <stdlib.h>     /* srand, rand */
#include <time.h> 
int random = rand();
int next = rand();
int next2 = rand();
//another sequence
srand (time(NULL));
int 2random = rand();
int 2next = rand();
int 2next2 = rand();
//will repeat the first sequence
srand (1);
int 3random = rand();
int 3next = rand();
int 3next2 = rand();

您是否正在寻找函数 srand 播种随机数生成器的种子?它经常用于当前时间播种,但是如果需要的话,您可以将其用作固定值的种子。

创建一个std::random_device的实例,该实例可能提供可能的非确定性统一随机数,并将其用于播种您选择的随机数引擎:

std::random_device rd;
std::default_random_engine gen(rd());

如果您想知道如何播种C库函数rand,则需要使用std::srand。它通常用当前时间播种, std::time(0)

当然,没有理由您不能使用std::random_device进行rand