草庐IT

随机数

全部标签

c++ - 如何生成海量高质量的随机数?

我正在研究在晶格中移动的粒子的随机游走模拟。出于这个原因,我必须创建大量随机数,大约10^12及以上。目前我正在使用C++11提供的可能性.在分析我的程序时,我发现大部分时间花在了上。.这些数字中的绝大多数都在0到1之间,分布均匀。然后我需要一个二项分布的数字。但重点在于0..1数字。问题是:我可以做些什么来减少生成这些数字所需的CPU时间,这会对它们的质量产生什么影响?如您所见,我尝试了不同的引擎,但这对CPU时间没有太大影响。此外,我的uniform01(gen)之间有什么区别?和generate_canonical::digits>(gen)无论如何?编辑:通读答案后我得出结论,

c++ - 快速生成随机集,蒙特卡洛模拟

我有一组数字~100,我希望对这组数字进行MC模拟,基本思想是我完全随机化该组,对前20个值进行一些比较/检查,存储结果并重复。现在实际的比较/检查算法非常快,它实际上在大约50个CPU周期内完成。考虑到这一点,为了优化这些模拟,我需要尽快生成随机集。目前我正在使用GeorgeMarsaglia的MultiplyWithCarry算法,它在17个CPU周期内为我提供一个随机整数,速度非常快。但是,使用Fisher-Yates洗牌算法我必须生成100个随机整数,约1700个CPU周期。这大大超过了我的比较时间。所以我的问题是是否有其他众所周知/强大的技术来进行这种类型的MC模拟,从而避免

c++ - 伪随机数生成器给出相同的第一个输出,但随后按预期运行

使用随机类和时间种子(NULL),均匀分布始终给出相同的第一个输出,即使使用不同的编译,但在第一个输出之后的行为与您期望的伪随机数生成器的行为相同。这是构造出来的,还是我使用不当?MWE:#include#include#includeusingnamespacestd;default_random_enginegen(time(NULL));uniform_int_distributiondist(10,200);intmain(){for(inti=0;i我运行这个程序的前三次得到的输出是:57134125136112在第二次尝试之前,我决定删除uniform_int_distri

c++ - 具有随机数据访问的压缩 vector/数组类

我想制作“压缩数组”/“压缩vector”类(详情如下),它允许随机数据访问或多或少的常数时间。“或多或少恒定时间”意味着虽然元素访问时间不是恒定的,但当我接近数组的某个点时它不应该继续增加。IE。容器不应该做更多的计算(比如“再次解压所有东西以获得最后一个元素”,以及“几乎不做任何事情来获得第一个元素”)来获得一个元素。可以通过将数组拆分为压缩数据block来实现。IE。访问一个元素应该采取"averageTime"+-一些偏差。我可以说我希望最好情况下的访问时间和最坏情况下的访问时间相对接近平均访问时间。我有哪些选择(合适的算法/已经可用的容器-如果有的话)?容器详细信息:容器充当

c++ - O(1) 中 unordered_set 中的随机元素

我见过有人提到可以在O(1)时间内从unordered_set中获取随机元素。我试图这样做:std::unordered_settest_set;//fillwithdatasize_tindex=rand()%test_set.size();constTestObject*test=*(test_set.begin()+index);但是,unordered_set迭代器不支持带有整数的+。begin可以指定一个size_t参数,但它是桶的索引而不是元素。随机挑选一个桶然后随机挑选其中的一个元素会导致非常不平衡的随机分布。适当的O(1)随机访问的秘诀是什么?如果重要的话,这是在VC+

c++ - 用于 C 密码学的快速伪随机数生成器

我使用以下代码生成用于加密目的的伪随机数序列,但后来我在某处读到它可能不是很安全。谁能给我一个更好的生成器的C实现——主要目标是让这种方法更快。例如,我做了一些研究并发现了BlumBlumShub方法,这将通过执行pow(N)计算完全降低性能。附言。并且请不要引用没有C/C++代码的维基百科文章。我正在寻找下面显示的C或C++代码示例。#defineROL(v,shift)((((v)>>((sizeof(v)*8)-(shift)))|((v) 最佳答案 ISAAC(http://www.burtleburtle.net/bob/

c++ - 在 C++ 中获取均匀分布的随机整数的标准方法是什么?

有没有函数可以获取指定范围内均匀分布的伪随机整数?我可以使用rand编写自己的函数,但这似乎是一种很常见的情况,STL中可能有适合它的东西。 最佳答案 Boost提供了许多随机数生成工具。对于统一分布,你有这个:http://www.boost.org/doc/libs/1_49_0/doc/html/boost/random/uniform_real_distribution.html编辑:更新为包含新的C++11实现。对于整数的情况,这里有引用:http://en.cppreference.com/w/cpp/numeric/r

概率统计·多维随机变量及其分布【相互独立随机变量、两个随机变量函数的分布 】

独立性很好理解,如果x和y的概率互不影响的话,那么联合分布律就应该为x,y的边缘分布律的乘积对于F(x,y)和f(x,y)都是一样的——F(x,y)=F(x)*F(y),f(x,y)=f(x)*f(y)离散型、连续型等价——当且仅当、充分必要需要对于所有的x,y步骤:求x和y的边缘函数然后f(x)*f(y)=f(x,y)这里的U表示均匀分布以上的题目都非常简单,浅看一下即可了🚀🚀🚀这个了解一下即可,二维正态分布都不太可能考(而且这个内容也能推导出来)要注意,ρ=0所指代的是二维正态分布中X,Y相互独立上课的时候有一道题问的是2个正态分布的联合分布是什么?选的是不一定是二维正态分布函数(不一定相

c++ - 为什么 std::sort 和 partial_sort 需要随机访问迭代器?

我想知道为什么c++标准要求std::sort应该只采用随机访问迭代器?我没有看到优势,因为std::sort和std::list::sort复杂度为N*log(N)。将std::sort限制为随机访问迭代器(RAI)似乎使得有必要为具有相同复杂性的列表编写单独的函数。这同样适用于partial_sort,其中列表的非RAI对应部分issimplymissing直到今天。这种设计是因为人们使用quick_sort的变体来实现std::sort吗?如果在RAI容器上编写排序算法有优势,是否最好使std::sort更通用,并让RAI容器像std::vector提供专门的v.sort?

powermockito .when()。theReturn()随机元素不返回期望值

我正在尝试测试一个连接到包含JCR节点的SQLServer数据库的Web服务方法,因为我们正在使用JackRabBit。该方法看起来像:publicStringaddDocumentByJson(StringfileName,byte[]fileContent,intstatus,StringuserName,StringjsonProperties){UUIDid=UUID.randomUUID();//ItdoesabunchofoperationsherereturnjsonResult;}在哪里jsonResult是一个类似于此的对象:{"id":"""version":1}现在,当我