草庐IT

c++ - 使用 std::random_device 和 pRNG 有什么区别,例如std::mt19937 和没有?

在C++11中,可以使用std::random_device生成数字,有或没有像mt19937这样的伪随机数生成器。在此示例代码中使用它会有什么不同:#include#includeintmain(){std::random_devicerd;std::mt19937mt(rd());std::uniform_real_distributiondist(1,10);for(inti=0;i 最佳答案 std::random_device应该为您提供mt19937等引擎的种子。所产生的连续数字的质量是完全不确定的,并且可能很容易不足以

c++ - 为什么 rand() 在以 1 和 UINT_MAX 为种子时产生相同的值?

这是一些代码:#includeintmain(){srand(1);std::cout这会产生以下输出:1680716807为什么这两个种子会产生相同的结果?它们在连续的rand()调用中产生的整个值序列也是相同的。可能值的范围太大,这不可能是纯巧合。是吗:rand()的执行意外(如果是这样,我很好奇那可能是什么)通过设计(如果是,为什么?)(可能相关:种子10、100、1000、10000和100000分别产生168070、1680700、16807000、168070000和1680700000。) 最佳答案 一个非常简单可用的

c++ - 每次在循环中进行临时均匀随机分布的效率如何?

例如:for(...){...std::uniform_real_distribution(min,max)(rng)...}在我看来,直觉上构造函数除了存储这两个值外不需要做太多事情,并且uniform_*_distribution实例中不应该有任何状态。我自己还没有对它进行分析(我还没有处于项目的那个阶段),但我觉得这个问题属于那里:)我知道这对于某些分布类型来说不是一个好主意-例如,std::normal_distribution可能会成对生成它的数字,而第二个数字每次都会被浪费。我觉得我所拥有的比仅仅访问rng()并自己进行数学计算更具可读性,但如果有任何其他方法可以更直接地编

c++ - 有没有办法以随机顺序找到下一个项目?

我知道有这样一个程序:#include#includeintmain(){conststd::stringalphabet="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";std::stringtemp="1234567890";srand(MAGICNUMBER);for(inti=0;;++i){for(intj=0;j基本上,随机的10符号字符串生成器。我还知道第124660967个生成的字符串是“2lwd9JjVnE”。有没有办法找到MAGICNUMBER是什么,或者至少找到序列中的下一个字符串?

c++ - 在 POSIX 上生成随机 double 的最佳方法是什么?

我想在[0.0,1.0)范围内得到均匀分布如果可能,请让实现使用来自/dev/urandom的随机字节。如果您的解决方案是线程安全的,那就太好了。如果您不确定,请指出。参见somesolution我看了其他答案后想到的。 最佳答案 这似乎是个不错的方法:unsignedshortintr1,r2,r3;//letr1,r2andr3holdrandomvaluesdoubleresult=ldexp(r1,-48)+ldexp(r2,-32)+ldexp(r3,-16);这是基于NetBSD的drand48实现。

c++ - 如何使用 <random> header 成员在 C++ 中生成随机数?

我学会了用C#编程,并开始学习C++。我正在使用VisualStudio2010IDE。我正在尝试使用中可用的分发类生成随机数.例如,我尝试执行以下操作:#includestd::normal_distribution*normal=newnormal_distribution(0.0,0.0);std::knuth_b*engine=newknuth_b();std::variate_generator>*rnd;rnd=newvariate_generator>(engine,normal);最后一行给出编译错误:IntelliSense:构造函数“std::tr1::variat

c++ - 选择没有重复的随机坐标?

我想在8x8板上选择随机坐标。x和y坐标只能是-8。-6、-4、-2、0、2、4、6和8。我想为20个对象选择随机坐标,但我不希望任何2个对象具有相同的坐标。用C++编程! 最佳答案 每个坐标只有9个可能的值,所以总共有81个可能的点。最简单的解决方案是枚举所有可能的点(例如:在数组或vector中),然后随机选择20个。您可以随机选择20,方法是从0到80中选择一个索引,交换数组中索引为80的元素,然后随机选择0到79中的一个索引,将其与索引79交换,依此类推20次。那么数组的最后20个元素将是20个不同的随机点。

c++ - 我应该如何为遗传算法生成随机数?

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭7年前。Improvethisquestion我正在编写一个遗传算法来解决MasterMind游戏。我对最佳方法进行了大量研究,拥有多样化的人群非常重要。我正在尝试确定如何在C++中获得真正好的随机数。我在程序开始时完成了srand(time(NULL))来设置种子,然后我只使用了rand()。我想知道的是,这到底有多随机?很好吗?还有其他更好的随机数库吗?我知道数论和随机性是一门非常复杂的学科;在编写自己的rand()版本时,您有什么建议吗?

c++ - C++中随机数的使用

这些代码片段在“随机性”方面是否等同?1)std::vectorcounts(20);std::random_devicerd;std::mt19937gen(rd());std::uniform_int_distributiondis(0,19);for(inti=0;i2)std::vectorcounts(20);std::random_devicerd;std::mt19937gen(rd());for(inti=0;idis(0,19);++counts[dis(gen)];}3)std::vectorcounts(20);std::random_devicerd;for(i

c++ - 如何在 Mac 上将 #include <random> 与 g++ 一起使用?

我正在尝试编译一个从别人那里得到的C++程序。它是在Windows上开发的,g++给出了一些编译错误。其中之一是#include这给出了以下错误:CandidateSolution.cpp:2:18:error:random:Nosuchfileordirectory。我试图找到可以从中获取error.h文件的位置,但找不到。我怎样才能让它发挥作用? 最佳答案 该头文件是C++11的新头文件。尝试使用-std=c++11或-std=c++0x。另外,请确保您的编译器是最新的。 关于c++