草庐IT

c++ - 什么类型的随机数引擎用于指定的随机分布?

C++11生成随机数的方式是:实例化一个随机数引擎实例化一个随机分布通过分布从引擎中推送随机数问题在于,随机数引擎和随机分布都是根据您使用的算术类型进行模板化的。这两种算术需要如何关联?您可以为引擎使用32位整数,为分布和相反的部分使用64位整数吗?有什么危险?浮点类型呢?我假设一个准则,即引擎生成的可能数字的数量应该大于或等于您希望获得的不同随机数的数量。不幸的是,我无法验证我的假设,因为在我的计算机上uint_fast32_t和uint_fast64_t是相同的,因此三个C++11生成器中的每一个的建议引擎都产生相同的结果。关于C++11发行版的文档,如std::uniform_r

c++ - 生成当前获胜的随机数 : CPU vs GPU,?

我一直致力于物理模拟,需要生成大量随机数(如果你想要一个想法,至少10^13)。我一直在使用Mersennetwister的C++11实现。我还读到,同样算法的GPU实现现在是Cuda库的一部分,并且GPU可以非常高效地完成这项任务;但我找不到明确的数字或​​基准比较。例如,与8核i7相比,上一代的Nvidia卡在生成随机数方面是否性能更高?如果是,价格是多少?我认为我的模拟可以通过让GPU生成大量随机数并由CPU完成其余的工作来获得好处。 最佳答案 可以在这里找到一些比较:https://developer.nvidia.com/

c++ - random_ints(a,N) 有什么作用以及如何在我的代码中使用它?

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭10年前。http://developer.download.nvidia.com/CUDA/training/GTC_Express_Sarah_Tariq_June2011.pdf在上面的教程(幻灯片29)中,他们启动了3个指向int的指针:int*a,*b,*c;显然这是类型(int*),但它们以某种方式使内核可以使用语法a[index]访问其索引。他们还使用一些(对我来说)未知的命令来初始化他们的

c++ - 无法解析类型 'std::default_random_engine'

我想在header随机中使用default_random_engine和uniform_real_distribution生成一些随机双数。我使用EclipseforC/C++&MinGW来构建我的项目。Eclipse版本:4.2.1EclipseCDTC/C++开发工具版本:8.1.1.201209170703EclipseCDTGCC交叉编译器支持版本:1.1.0.201209170703MinGW版本:4.6.2(使用“gcc-v”检查)当我在编辑器中键入std::default_random_engine时,Eclipse提示我“Type'std::default_random

c++ - 为什么 std::random_device 将其复制构造函数定义为已删除?

std::random_device的拷贝构造函数被删除了,我不知道为什么。我从docs中找到的唯一笔记是:2)Thecopyconstructorisdeleted:std::random_deviceisnotcopyable.似乎没有明确的理由说明为什么要删除它。这背后的原因是什么? 最佳答案 std::random_device不可复制的原因是,如果可以,则复制的实例可能返回与原始实例完全相同的数字(这是实现定义的虽然)!这是因为(docs):std::random_devicemaybeimplementedinterms

c++ - C++ STL 中的确定性随机数流

我想提供一个数字,然后收到一组随机数。但是,无论我在哪台计算机上运行它,我都希望这些数字相同(假设我提供相同的种子)。基本上我的问题是:在C++中,如果我使用rand(),但为srand()提供用户定义的种子而不是当前时间,我能否在任何计算机上生成相同的随机数流? 最佳答案 有几十个PRNG可以作为库使用。选一个。我倾向于使用MersenneTwister.通过使用外部提供的库,您可以绕过您的语言库rand()的奇怪或错误实现的风险。只要您的平台都符合相同的数学语义,您就会得到一致的结果。MT是我的最爱,因为我是一名物理学家,我将这

c++ - 随机数不是那么随机

我在一个类中有一个方法如下...classfoo{intbar::randomNum10to50(){srand(time(NULL));intrandom10to50=rand()%50+10;returnrandom10to50;}}然而,当我从main调用它时(只是为了检查输出,因为我没有从程序中获得预期的行为),就像这样......foocreate;for(inti=0;i每次运行时都是完全相同的数字(即9,9,9,9,9,.....;下一次运行:43,43,43,43,.....)我不不知道出了什么问题。代码运行得非常快,所以我认为这可能是问题所在,但我不明白为什么它的20

IMX6ULL开发板在查看ip时出现 random:crng init done

         本人使用的是百问网韦东山老师的imx6ullmini开发板,在设置好双网卡后,Windows和ubuntu可以互相ping通,但是在MobaXterm的串口下查看开发板ip时,在输入ifconfig命令后,出现random:crnginitdone语句。                在百度过后,明白了这句不是错误的意思,原因是random设备初始化太慢,应用程序调用random的函数时可能被阻塞。        因systemd在系统启动时需要熵信息,且内核在可用熵较少时会阻塞相应的调用,所以系统启动时可能挂起数分钟至数小时,直至随机子系统充分得到初始化(random:cr

c++ - 与 Mathematica 相比,C++ 中的 float 学舍入很奇怪

下面的帖子已经解决了,这个问题是因为对http://www.cplusplus.com/reference/random/piecewise_constant_distribution/上的公式解释错误导致的强烈建议读者考虑页面:http://en.cppreference.com/w/cpp/numeric/random/piecewise_constant_distribution我有以下奇怪的现象让我很困惑!:我有一个分段常数概率密度,如下所示usingRandomGenType=std::mt19937_64;RandomGenTypegen(51651651651);usin

c++ - 有没有办法检查 std::random_device 是否实际上是随机的?

引自cppreference:std::random_deviceisanon-deterministicrandomnumberengine,althoughimplementationsareallowedtoimplementstd::random_deviceusingapseudo-randomnumberengineifthereisnosupportfornon-deterministicrandomnumbergeneration.有没有办法检查当前的实现是否使用PRNG而不是RNG(然后说错误退出),如果没有,为什么不呢?请注意,一点谷歌搜索表明至少MinGW以这种方