草庐IT

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

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

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

c++ - Hunt the Wumpus - 房间连接

所以我正在编写游戏的一个版本HunttheWumpus在C++中。唯一真正的区别是我不担心洞穴的形状是十二面体。到目前为止,我已经实现了洞穴的创建和英雄、bat、wumpus和坑的随机插入。//HunttheWumpus#include"std_lib_facilities.h"#include"time.h"classRoom{boolis_occupied;boolhas_wumpus;boolhas_bat;boolhas_pit;public:Room()//defaultconstructor{is_occupied=false;has_wumpus=false;has_ba

c++ - 使用 boost::random 从要删除元素的 std::list 中进行选择

查看此relatedquestion更通用地使用BoostRandom库。我的问题涉及从std::list中选择一个随机元素,执行一些操作,这可能包括从列表中删除元素,然后选择另一个随机元素,直到满足某些条件满意。boost代码和for循环大致如下所示://createandinsertelementsintoliststd::listmyList;//[...]//selectuniformlyfromlistindicesboost::uniform_intindices(0,myList.size()-1);boost::variate_generator>selectIndex

c++ - 在哪里初始化随机种子以通过多个随机模块使用?

所以,每次我开发一些大的东西,将多个模块组合在一起构建最终功能时,我一直在想同一个问题:如果超过1个模块需要使用随机函数,在哪里初始化随机种子?如果我有一个需要随机的类(例如,类通过使用self实现的快速排序对输入数组进行排序来初始化自身,所以我需要一个随机数来选择主元),我通常有一个私有(private)的staticboolisRandOn;变量,所以在我开始选择随机基准之前,我会检查该变量并执行srand(time(NULL));如果随机尚未打开。如果我在一个命名空间中有大量的实用函数,我会做一件非常相似的事情:我将这样一个变量放在我的utils库中的一个匿名命名空间中,并或多或

c++ - 在 gmp 任意精度上生成正态分布

所以,我正在尝试使用gmp对于我正在做的一些计算,在某些时候我需要从正态分布中生成一个伪随机数(prn)。由于gmp有一个统一的随机变量,这已经很有帮助了。但是,我发现很难选择应该使用哪种方法从统一的方法生成正态分布。实际上,我的问题是gmp只有简单的操作,所以例如我不能使用cos或erf评估,因为我必须自己实现。我的问题是我可以在多大程度上从gmp上的正态分布生成prn,如果这非常困难,是否有任何已经实现正态分布的任意精度库。作为无效方法的两个示例(从thisquestion检索):Zigguratalgorithm使用f的评估,在这种情况下它是一个非整数指数,因此不受gmp支持。B

c++ - C/C++ 泊松圆盘采样的代码/库

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭5年前。Improvethisquestion我正在寻找一个用C或C++实现泊松圆盘采样的库,或者另一个可以轻松翻译的库。最好不是令人难以置信的长资源,但如果是也可以。

c++ - 这个 UUID 生成代码有问题吗?

所以我有一些代码需要使用UUID作为数据库ID。为了简单起见,我使用了v4(随机),而且我没有看到任何真正的理由使用任何其他随机性较低的UUID版本。我的UUID类大致定义如下(简化):classuuid{public:staticuuidcreate_v4();public://cutoutforsimplification...public:uint8_tbytes[16];};实际的生成代码如下所示:namespace{uint32_trand32(){//weneedtodothis,becausethereisno//gauranteethatRAND_MAXis>=0xff

c++ - 在 C++ 中实现随机 oracle(输出在范围内是随机的,但相同输入的输出相同)

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。这个问题似乎与helpcenter中定义的范围内的编程无关。.关闭9年前。Improvethisquestion我希望实现randomoracle在C++中。本质上,只是一个函数f:{1,...,n}->[0,1],因此对于{1,...,n}中的每个输入i,输出f(i)是随机的[0,1]中的值。但重要的是,每次调用f(i)都应该返回相同的值。换句话说,我想要一个非常大的表f,其中包含[0,1]中由整数索引的独立同分布的随机变量。当然,我不想预先计算表格并存储它。相反,我希望即时实现此表。您输入i,然后

c++ - (0,2)之间均匀分布的随机数

这个问题在这里已经有了答案:Randomfloatnumbergeneration(14个答案)关闭8年前。我想在(0,2)之间生成随机数。我正在使用以下代码:doublefRand(doublefMin,doublefMax){doublef=(double)rand()/RAND_MAX;returnfMin+f*(fMax-fMin);}和设置:fMin=0;fMax=2;但我没有得到均匀分布的数字。我在循环中调用这个函数。它生成随机数,但几乎所有的数字都只落在两个区域,分布不均。如何确保数字均匀分布?