有谁能告诉我如何在C ++中生成相同的随机数值?
我在Matlab中知道我可以做到以下几点:
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 ++中这样做。
答案 0 :(得分:0)
您是否正在寻找为随机数生成器播种的函数srand?它经常用于播种当前时间,但如果需要,可以使用它以固定值播种。
答案 1 :(得分:0)
创建std::random_device
的实例,该实例提供可能的非确定性统一随机数,并使用它来为您选择的随机数引擎播种:
std::random_device rd;
std::default_random_engine gen(rd());
如果您想知道如何为C库函数rand
设定种子,则需要使用std::srand
。它通常以当前时间std::time(0)
播种。
当然,您无法使用std::random_device
种子rand
。
答案 2 :(得分:0)
使用相同种子的两个不同初始化将生成 随后对兰德的调用也会产生相同的结果。
如果seed设置为1,则将生成器重新初始化为其初始值 value并产生与调用rand或之前相同的值 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();