草庐IT

c++ - 在不重新洗牌的情况下随机选择 std::vector 的所有元素一次的有效方法

我正在寻找一种有效的方法来选择对std::vector的每个元素的访问权以随机顺序,不重新洗牌或复制它们,即不使用std::random_shuffle并确保每个元素只被选择一次。我不想复制或重组a)T的每个实例可能是一个非常大的对象,并且b)对于我将对vector的元素执行的其他操作,它们更容易保持相同的顺序。此外,我真的不想走上不断挑选和拒绝重复的道路。很可能我会在vector中存储很多这样的大对象,效率是关键,因为我希望每秒多次调用这种随机选择方法。 最佳答案 创建一个与现有vector大小相同的vector,该vector使

c++ - 如何播种 randn 函数 opencv

我想播种randn函数,但我做不到。srand(time(NULL));Matmymat=Mat::zeroes(1024,1024,CV_32F);randn(mymat,0,1);它不应该给我随机垫,命名为mymat,其mean=0和variance=1?但是,它在每次运行时都提供相同的mymat。这是randn的链接它声称srand可以工作。我尝试给出不同的数字而不是时间(NULL),但它们都具有相同的输出随机数。我已经从另一台机器上检查过同样的东西,它给出了与第一台机器相同的输出。所以播种不起作用。谢谢, 最佳答案 您可以使

c++ - C++ 中的 Gamma 分布随机变量

在C++中获取Gamma分布随机变量的最简单方法是什么?Boost好像有这个功能,但是我不清楚怎么用。 最佳答案 这很简单:boost::mt19937rng;boost::gamma_distributionpdf(alpha);boost::variate_generator>generator(rng,pdf);构造一个随机数生成器和一个gammadistribution并将它们粘合在一起成为一个可用的生成器。现在您可以通过调用generator创建随机数。 关于c++-C++中的

C++ rand () 没有提供基于种子的正确数字

我正在为我的类(class)做C++作业,我们必须使用种子为99的rand()来生成一组值。但是,我的问题是,当我尝试在我们的参数内创建一个值时,该数字与教师为我们提供的第一个确定数字不同。代码如下所示:intlottoNumber;srand(RANDOM_NUMBER_SEED);do{lottoNumber=rand();}while(lottoNumber>25||lottoNumber由此产生的值(value)是13,而预期产生的数字是2。任何关于为什么不同的帮助都会很好,谢谢! 最佳答案 rand()使用的算法是实现定义

c++ - 播种随机数生成器 C++

这个问题在这里已经有了答案:HowtogeneratearandomnumberinC++?(14个答案)关闭5年前。我有两个问题。在不使用srand(time(NULL))的情况下,还有哪些其他方法可以在C++中为伪随机数生成器提供种子?我问第一个问题的原因。我目前使用时间作为生成器的种子,但生成器返回的数字始终相同。我很确定原因是因为存储时间的变量在某种程度上被截断了。(我有一条警告消息说,“隐式转换失去整数精度:'time_t'(又名'long')到'unsignedint')我猜这告诉我本质上我的种子要到明年才会改变发生。出于我的目的,使用时间作为我的种子会工作得很好,但我不知

c++ - 如何从 vector 中获取随机且唯一的值?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:UniquerandomnumbersinO(1)?UniquerandomnumbersinanintegerarrayintheCprogramminglanguage我有一个std::vector的一些未确定大小的独特元素。我想从此vector中获取20个独特且随机的元素。“唯一”是指我不想多次获取同一个索引。目前我这样做的方法是调用std::random_shuffle。但这需要我打乱整个vector(可能包含1000多个元素)。我不介意改变vector(虽然我不喜欢,因为我不需要使用线程锁),但最重

c++ - 大于 100,000 的随机数

我正在用C/C++编写代码,我想创建很多大于100,000的随机数。我会怎么做?使用rand(); 最佳答案 您不会使用rand来做到这一点,但是使用更新的C++附带的适当的随机数生成器,请参见例如cppreference.com.constintmin=100000;constintmax=1000000;std::default_random_enginegenerator;std::uniform_int_distributiondistribution(min,max);intrandom_int=distribution(

C++。 RNG 是否有可能在使用相同种子的两台不同机器中给出不同的随机变量?

我有一段冗长而复杂的源代码,它使用带有修复种子的随机数生成器。这段代码是一个模拟器,这个模拟器的参数就是这个RNG给出的随机值。当我在同一台机器上执行代码时,无论我尝试多少次,输出都是一样的。但是当我在两台不同的机器上执行这段代码并比较两台机器的输出时,它们是不同的。是否有可能两台不同的机器使用相同的随机数生成器和相同的种子给出不同的输出?编译器版本、库和操作系统相同。 最佳答案 这当然是可能的,因为RNG可能会将机器特定数据与种子(例如网卡地址)结合起来以生成随机数。它基本上是特定于实现的。

c++ - 非重复随机数发生器

我想制作一个不重复给出的数字的数字生成器已经(C++)。我只知道:intrandomgenerator(){intrandom;srand(time(0));random=rand()%11;return(random);}//Addedthisonedition那个函数给了我多余的数字。我正在尝试创建一个以随机顺序给出10个问题的问卷程序,我不希望任何问题再次出现。有人知道语法吗? 最佳答案 我会做什么:生成一个长度为N的vector并用值1,2,...N填充它。使用std::random_shuffle.如果您有30个元素但只想

c++ - 更好的随机算法?

我正在用C++制作一个游戏,它涉及用随机bool值(是或否)填充方block,是否是由rand()%1决定。感觉不是很随意。我在启动时将srand与ctime一起使用,但似乎出现了相同的模式。是否有任何算法可以创建非常随机的数字?或者关于如何改进rand()的任何建议? 最佳答案 真正的随机性通常看起来并不是很随机。不要期望看到奇怪的运行。但至少您可以立即做的一件事是避免只使用最低位。在C中引用数字食谱:Ifyouwanttogeneratearandomintegerbetween1and10,youshouldalwaysdoi