gpt4 book ai didi

random - Armadillo 生成相同的随机数

转载 作者:行者123 更新时间:2023-12-02 06:30:28 29 4
gpt4 key购买 nike

我在 cygwin64(或 minGW)下使用 Armadillo 包(v.7.300.1)生成一个随机矩阵:

#include<armadillo>

int main(){
arma::mat(3,3, arma::fill::randu).print();
return 0;
}

程序(在重新构建或重新运行后)总是生成:
0.6900  0.5548  0.2074    
0.5054 0.3784 0.6263
0.5915 0.2577 0.3401

为什么总是一样?怎么了?

最佳答案

您忘记设置种子以引入随机性。回想一下,所有 (Q)RNG 都是确定性的。你在这里看到的,康拉德会称之为功能。

从文档:

To change the RNG seed, use arma_rng::set_seed(value) or arma_rng::set_seed_random() functions.



演示

稍微修复的文件版本:
/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$

如果您想要可重现的结果,您需要使用其他变体并跟踪种子值。

编辑:在 2018 年末使用更新版本的 Armadillo ,现在似乎需要链接,所以请让它 g++ -o armaRand armaRand.cpp -larmadillo .其余的仍然成立:通过用(足够)随机位播种随机数生成器,我们确实得到了预期的不同答案。

关于random - Armadillo 生成相同的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38999846/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com