草庐IT

伪随机码

全部标签

c++ - 如何为 GSL(GNU 科学图书馆)改编 C++ 风格的随机数引擎?

我有一个满足C++随机数引擎要求的PRNG,如所述here.(它来自PCGfamily)。也就是说,C++标准库分发类可以使用该引擎的一个实例来生成随机数:pcg_extras::seed_seq_fromseed_source;pcg32rng(seed_source);std::uniform_real_distributionuniformDist(0.,1.);doublerandomNumber=uniformDist(rng);我需要从中未包含的分布生成样本,所以我需要使用GSL中的函数。为此,我如何使用我的C++引擎?GSLrng函数都需要constgsl_rng*作为第

c++ - 生成随机约束图

我需要生成一个具有固定顶点数的随机图。我每次都很难找到解决方案。图形规则每个顶点将有一个随机数量的连接,最多为N-1,其中N是顶点的总数。顶点不能包含与自身的直接连接顶点不能包含与其他顶点的重复连接。如果顶点A连接到顶点B,则顶点B必须连接到顶点A。每个顶点必须连接到至少3个其他顶点。所以每个顶点将有[3,N-1]条边。我大约有70%的时间得到了正确的解决方案,但其他时候我在图中走得很远,然后就没有有效的顶点了。我需要对顶点连接有什么约束才能保证解决方案?目前我在做什么为[3,N-1]之间的每个顶点随机分配一些连接。检查连接总数是否为偶数。如果A指向B,B指向A,那么图中的连接总数应该

c++ - 随机文件写入

如果我有多个线程生成文件block,写出block的最佳方法是什么?ex)5个线程处理一个包含500个block的文件,block0不一定在block1之前完成,但磁盘上的输出文件需要有序。(第0block,第1block,第2block,....第499block)程序是用C++编写的,fwrite()能否以某种方式“随机访问”文件?该文件是从头开始创建的,这意味着当block5完成时,由于block1~4尚未完成,文件的大小可能仍为0。我可以直接写出block5吗?(使用适当的fseek)这段代码对性能至关重要,所以我真的很好奇任何可以提高性能的东西。这看起来像是多个生产者(blo

c++ - 在 C++ 中仅随机排列多维数组的行

我是C++的初学者,因此我在打乱多维数组的行时遇到问题。我查看了相关的解决方案,但对我帮助不大。到目前为止,这是我尝试过的:intmain(intargc,char**argv){Arrayf1;f1=allocate(4,4);f1[0][0]=1.0;f1[0][1]=2.0;f1[0][2]=3.0;f1[0][3]=4.0;f1[1][0]=5.0;f1[1][1]=6.0;f1[1][2]=7.0;f1[1][3]=8.0;f1[2][0]=9.0;f1[2][1]=10.0;f1[2][2]=11.0;f1[2][3]=12.0;f1[3][0]=13.0;f1[3][1]

c++ - 两个区间 [a,b] 之间的 double 随机数生成

我需要生成X随机双数均匀分布在两个区间[a,b]之间,其中a和b也是双数。那些X需要在类函数内部生成数字,比如myclass::doSomething(a,b).问题是间隔[a,b]传递给了doSomething(a,b)每次doSomething(a,b)时功能都会改变函数被另一个类函数调用,比如doThat().我想要一个可以让我:1.有一个engine具有更高的范围,理想情况下,每次应用程序运行只应播种一次。2.X每次调用doSomething()时都会生成随机双数函数,应均匀分布。我下面的解决方案不允许engine的范围更大而且似乎生成的数字不一定是均匀分布的。//file:u

c++ - boost 随机样本,如 python random.sample

我正在尝试使用C++来模仿pythonrandom.sample(a_set,n_samples)类C++函数setsample(setinput,intn_samples)在我自己写之前,有图书馆在做这件事吗?我的电脑上有boost1.46。 最佳答案 从C++17开始就有了std::sample:std::sample(input.begin(),input.end(),std::back_inserter(out),n_samples,std::mt19937{std::random_device{}()});原始答案如下。我

c++ - 具有随机读/写的 SSD 原始 I/O 基准测试

我的笔记本电脑有一个SSD磁盘,其物理磁盘扇区大小为512字节,逻辑磁盘扇区大小为4,096字节。我正在开发一个必须绕过所有操作系统缓存的ACID数据库系统,因此我直接从分配的内部内存(RAM)写入SSD磁盘。我还在运行测试之前扩展文件,并且在测试期间不调整文件大小。现在这是我的问题,根据SSDbenchmarks随机读取和写入应分别在30MB/s到90MB/s的范围内。但这是我从无数性能测试中获得的(相当可怕的)遥测数据:读取随机512字节block(物理扇区大小)时为1.2MB/s写入随机512字节block(物理扇区大小)时为512KB/s读取随机4,096字节block(逻辑扇

c++ - 创建一个函数以返回指定范围内的随机数

我正在浏览C++Primer,我刚刚完成讨论的章节实用程序。问我几个问题:Exercise17.28:Writeafunctionthatgeneratesandreturnsauniformlydistributedrandomunsignedinteachtimeitiscalled.Exercise17.29:Allowtheusertosupplyaseedasanoptionalargumenttothefunctionyouwroteinthepreviousexercise.Exercise17.30:Reviseyourfunctionagainthistimetota

c++ - 条件随机场 (CRF) 实现/库

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭3年前。Improvethisquestion我正在寻找一个免费的C++条件随机场(CRF)实现,但不适用于文本处理。有很多很酷的实现:CRFsuite(用于文本处理)CRF++(用于文本处理)JGMT(Matlab-MEX而非C++)还有其他包,如Darwin和HCRF,在C++中没有使用示例。我想知道是否有人知道我上面提到的以外的任何C++CRF库,或者知道有关如何设置和使用Darwin或HCRF的任何示例?

c++ - 从非常大的范围返回非重复的随机值

我想要一个函数,它可以从一组n个整数(0到n-1)中产生k个伪随机值,而不重复任何先前的结果。k小于或等于n。O(n)内存是NotAcceptable因为n的大小很大以及我需要重新洗牌的频率。这些是我到目前为止考虑过的方法:数组:通常,如果我想要无重复的随机值,我会打乱一个数组,但那是O(n)内存。n可能太大而无法工作。longnextvalue(void){staticlongarray[4000000000];staticints=0;if(s==0){for(inti=0;in态PRNG:有多种随机数生成器可以设计为具有n的周期。并访问n那个时期的独特状态。最简单的例子是:lon