我正在尝试编写代码,在 A 类中创建一个对象 mt19937,该对象可用于类内部函数以生成随机数,我还想将对该同一对象的引用传递给 B 类的各种实例在 A 类内部声明。那些通过引用传递的对象也应该能够生成随机数以供 B 类内部使用。 问题是:在 A 类中它生成随机数,但在 B 类中它生成相同的序列。 ...
我正在尝试编写代码,在 A 类中创建一个对象 mt19937,该对象可用于类内部函数以生成随机数,我还想将对该同一对象的引用传递给 B 类的各种实例在 A 类内部声明。那些通过引用传递的对象也应该能够生成随机数以供 B 类内部使用。 问题是:在 A 类中它生成随机数,但在 B 类中它生成相同的序列。 ...
我见过std::mt19937的几种用法,如下所示:#include <random> size_t get_rand() { static thread_local std::mt19937 generator(time(0)); std::uniform_int_ ...
假设我有一个 class,如下所示: 如您所见,有两个函数,它们都需要一个随机数来做某事。 在这种情况下,我可以将数据成员std::mt19937 mt设置为 static 并在 cpp 文件中对其进行初始化吗? 我刚刚尝试过,它似乎有效。 但是不知道是不是哪里出了问题。 我可以说 static 或 ...
我不太明白为什么我们可以在 gen_ran() function 的三行中的每一行中放置一个 static。我搜索了很多但似乎没有明确的答案。 我的理解是通过使用 static,我们只初始化一次对象,但每个 class(random_device、mt19937、uniform_int_distr ...
我有以下通用 C++ 通用 URNG function: 我从以下测试 function 中调用 function: 在 Visual Studio 2019 中使用c++latest会导致以下编译错误: 它曾经可以工作,但最近的 VS2019 更新导致它失败。 我想念什么? ...
我正在尝试构建一个简单的随机数生成器,但我想确保 random_device 正常工作。 我从以下代码开始: 我曾看到“std::chrono::high_resolution_clock::now().time_since_epoch().count()”被推荐为 random_device ...
我有这个随机浮点函数,看起来像这样: 如您所见,该函数接受一个输入并返回一个介于 -1 和 1 之间的输出 但我的问题是,当我给出一个输入浮点数时,如果点左侧的数字相同。 示例:(1.2, 1.52, 1.658, 1.01...) 随机浮点数将给出相同的值,(抱歉英语不好) 所以输入 1.5 ...
我有一个带有意外输出的简单 C++ 程序: clang 和 gcc 输出 5000 2504 2504 2504 我觉得有趣的是 mt19937(32 位)的 sizeof 标准实现大约是 boost 版本的 2 倍,而 64 位实现完美匹配。 由于 MT 使用了 ...
我用 Python 3.8.2 运行了这个(并不是说它应该太重要)。 这不是我对 MT19937 32 位 PRNG 的期望。 确切地说,我期待的值类似于本网站中提供的值: https://create.stephan-brumme.com/mersenne-twister/ Python 与其 ...
如何使用 marsenne twiner 算法生成 32 位整数随机数? 并将其保存为二进制文件。 ...
我可能会付出不必要的努力,但是谁在乎,让我们尝试解决这个问题:我想在代码中使用<random>中的“ random_device”生成器。 但这可能在某些系统上不可用(根据规范),因此我想将mt19937作为备份(但是无论我使用什么生成器,我都希望在末尾使用相同的变量名)。 现在 ...
我的代码无法识别“生成器”,但我在 C++ 文件的顶部声明了它。 我需要它是线程安全的,所以我用“thread_local”声明它: ...
我可以在一个简单的应用程序中获得mt19937 rng种子。 现在我试图让每个应用程序播种一次,并在需要时多次使用它。 这是我的代码。 我得到的错误是GenerateRandomNumber - “gen:undeclared identifier”。 main.cpp中 g ...
我遇到的问题发生在我试图测试生成伪随机数的cppreference示例时。 举个例子: 在我的机器上,它会导致崩溃。 通过“崩溃”我的意思是该过程只是挂起并在几秒后返回0xC0000005 。 我想知道是什么原因造成的。 GCC错误? 我的机器出现故障? 我决定测试,结果 ...
这是我的尝试 这是一个可能的输出 我希望最后两个数字相同。 显然,我未能编写和/或阅读我的mt19937。 您能帮忙解决此代码吗? ...
嘿! 我刚刚开始用C ++编写代码,我不确定如何正确使用随机数生成器。 例如,我需要范围为[0,30000]的数字,如何确保不会从范围中得到的数字很小。 我的功能: 您介意帮助我正确配置normal_distribution吗? ...
在程序中,经常在不同的类中生成随机数。 因此,我想创建一个返回生成器std :: mt19937的单个实例的类。 我还考虑到某些编译器不适用于std :: random_device(为此,请检查熵的值)。 我创建了一个类单例。 但是,当我离开类生成器std :: mt19937时 ...
之前已经问过这个问题 ( stackoverflow ) 但 (接受的) 答案并不令人满意。 以下示例保存和加载状态,但取决于生成的值的数量,它可以工作或不工作: 使用这些参数,它可以像预期的那样工作。 但是,如果我设置preN=3 ,则输出如下所示: 为什么断言不适用? 现在我设置preN=3和m ...
尝试在Windows 7,Vis Studio 2013上使用Boost工具包。 我已经在这里成功运行了他们的例子 代码中有一组代码行: 我注释掉typedef并替换为 完全符合指令的要求,但是问题在于程序的其余部分无法识别。 我认为他们在那儿省略了一些指示。 有 ...
标准是否保证如果std::mt19937用相同的数字作为种子,它将在所有平台上产生相同的数字序列? 换句话说,它的实现是由标准定义的还是像std::rand()被视为实现细节? ...