Random 犰狳产生相同的随机数
我使用Armadillo软件包(v.7.300.1)在cygwin64(或minGW)下生成一个随机矩阵:Random 犰狳产生相同的随机数,random,armadillo,Random,Armadillo,我使用Armadillo软件包(v.7.300.1)在cygwin64(或minGW)下生成一个随机矩阵: 为什么总是一样的?怎么了?您忘记设置种子以引入随机性。回想一下,所有(Q)RNG都是确定性的。你在这里看到的,康拉德称之为特征 从文档中: 要更改RNG种子,请使用arma\u RNG::set\u seed(value)或arma\u RNG::set\u seed\u random()函数 演示 稍微修复的文件版本: /tmp$ cat armaRand.cpp #include&l
为什么总是一样的?怎么了?您忘记设置种子以引入随机性。回想一下,所有(Q)RNG都是确定性的。你在这里看到的,康拉德称之为特征 从文档中: 要更改RNG种子,请使用
arma\u RNG::set\u seed(value)
或arma\u RNG::set\u seed\u random()
函数
演示
稍微修复的文件版本:
/tmp$ cat armaRand.cpp
#include<armadillo>
int main(){
arma::arma_rng::set_seed_random();
arma::mat(3,3, arma::fill::randu).print();
exit(0);
}
/tmp$ g++ -o armaRand armaRand.cpp
/tmp$ ./armaRand
0.8824 0.4457 0.3589
0.7134 0.4768 0.8335
0.0171 0.4119 0.3720
/tmp$ ./armaRand
0.3417 0.3643 0.6865
0.2814 0.0191 0.6797
0.9737 0.1593 0.5013
/tmp$
/tmp$cat armaRand.cpp
#包括
int main(){
arma::arma_rng::set_seed_random();
arma::mat(3,3,arma::fill::randu).print();
出口(0);
}
/tmp$g++-o armaRand.cpp
/tmp美元/阿马兰
0.8824 0.4457 0.3589
0.7134 0.4768 0.8335
0.0171 0.4119 0.3720
/tmp美元/阿马兰
0.3417 0.3643 0.6865
0.2814 0.0191 0.6797
0.9737 0.1593 0.5013
/tmp美元
如果希望得到可重复的结果,则需要使用其他变量并跟踪种子值
编辑:2018年末,新版本的犰狳需要链接,因此请将其设置为
g++-o armaRand armaRand.cpp-larmadillo
。其余的仍然适用:通过在随机数生成器中植入(足够多的)随机位,我们确实会得到预期的不同答案。欢迎您,也欢迎使用StackOverflow。如果答案有帮助,请“向上投票”(点击向上三角形)或者“接受它”(点击勾号,只有你才能看到)。那个这就是这里的工作原理…嘿!当我运行该命令时,我得到以下错误:/tmp/ccw92UPB.o:In functionTLS wrapper function for arma::arma_rng_cx11_instance:test.cpp:(.text.ZTWN4arma23arma_rng_cx11_instanceE[_ZTWN4arma23arma_rng_cx11_instanceE]+0x21):未定义对arma::arma\u rng\u cxx11\u实例“collect2”的引用:错误:ld返回1退出状态我被迫使用Armadillo v3。有没有在那里播种的想法set\u seed\u random
似乎不存在,而且我找不到V3的文档。我想你必须浏览该版本的标题。
0.6900 0.5548 0.2074
0.5054 0.3784 0.6263
0.5915 0.2577 0.3401
/tmp$ cat armaRand.cpp
#include<armadillo>
int main(){
arma::arma_rng::set_seed_random();
arma::mat(3,3, arma::fill::randu).print();
exit(0);
}
/tmp$ g++ -o armaRand armaRand.cpp
/tmp$ ./armaRand
0.8824 0.4457 0.3589
0.7134 0.4768 0.8335
0.0171 0.4119 0.3720
/tmp$ ./armaRand
0.3417 0.3643 0.6865
0.2814 0.0191 0.6797
0.9737 0.1593 0.5013
/tmp$