问题标签 [mersenne-twister]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
947 浏览

c++ - C++11 提供了哪种 Mersenne Twister?

我无法确定 Mersenne Twister C++11 提供了哪种变体。在 Mersenne twister 上查看 Matsumoto 和 Nishimura ACM 论文:A 623 Dimensionally Equidistributed Uniform Pseudorandom Number Generator,作者提供了算法、算法的实现,并将其称为MT19937

但是,当我用下面的小程序测试 C++11 的同名生成器时,我无法重现 Matsumoto 和 Nishimura 的 MT19937 创建的流。这些流与产生的第一个 32 位字不同。

C++11 提供了哪种 Mersenne Twister?


下面的程序是在 Fedora 22 上使用 GCC-std=c++11和 GNU 的stdlibc++.

0 投票
0 回答
361 浏览

matlab - 如何使用 Mersenne Twister 生成器查找种子序列

我试图使用 mersenne twister 生成器找到随机 PN 序列的下一个种子。我的代码如下 -

我正在初始化第一个 seed=2 但我想知道下一个种子序列是什么?我不知道寻找下一个种子的代码应该是什么?

我正在阅读一些论文,但找不到我的解决方案。需要有关此问题的专家解决方案。

0 投票
2 回答
135 浏览

c# - 在 Web 服务中播种 Mersenne Twister

我需要创建一个 Web 服务来接收一些数据并返回一个随机数。随机数必须由 Mersenne Twister 算法生成。

其中一项规范是为 Mersenne Twister 播种。因为是 Web 服务,我是否必须在每个请求中使用新种子播种 Mersenne 对象?

0 投票
2 回答
2745 浏览

c++ - uniform_real_distribution c++ 的最小/最大参数错误

我有一个函数可以在方格上生成(伪)随机游走,其中游走不应超出该正方形的边界,完整功能如下:

在方法中看到的条件阻止步行离开边界。但是,当使用足够数量的步骤调用它时(以便执行这些条件中的任何一个),我收到一条错误消息:

请注意,我发送给这个函数的 dist 是:

因此(从打印到终端的值可以看出)问题不在于偏移量将永远大于在任何条件情况下给予 distOffset 的最大值。

问题是我不能给 u_r_d 一个任意精度的双精度值吗?还是我缺少其他东西?

编辑:我应该补充一点,这些是 main() 中使用的值:

0 投票
1 回答
319 浏览

c++ - Twister Core 编译错误

我正在尝试使用 Cygwin 在 Windows 8.1(64 位)上编译 twister-core。我正在按照链接 Compile Twister for Windows中给出的步骤操作 我已经从这里复制代码:Github“Twister-Core” 我已经成功运行“./bootstrap.sh”,没有任何错误。当我运行“make”命令时,它会显示错误并且 make 过程失败:

错误: /usr/include/boost/asio/detail/config.hpp:577:5: error: #error 您必须将 -D__USE_W32_SOCKETS 添加到您的编译器选项中。# error 您必须将 -D__USE_W32_SOCKETS 添加到您的编译器选项中。/usr/include/openssl/x509.h:192:1: 错误:粘贴“stack_st_”和“(”没有给出有效的预处理令牌 DECLARE_STACK_OF(X509_NAME) ^ /usr/include/openssl/pkcs7.h:103: 1:错误:粘贴“stack_st_”和“(”没有给出有效的预处理令牌DECLARE_STACK_OF(PKCS7_SIGNER_INFO)/usr/include/openssl/x509v3.h:753:30:错误:'unsigned'之前的预期主表达式无符号长chtype); ^ /usr/include/openssl/x509v3.h:753:50: 错误:表达式列表在初始化程序中被视为复合表达式 [-fpermissive] unsigned long chtype); ^ Makefile:1407: 目标“libtorrent/src/web_connection_base.o”的配方失败了:

0 投票
1 回答
332 浏览

c++ - 随机生成唯一整数 C++

我为英雄联盟编写了一个简单的程序,它生成一个随机角色(AP、AD、混合、坦克)、车道和英雄。你可以在这里看到代码:

我想做的是让这个程序一次生成 5 行。但这有两个问题。

第一个问题是我需要英雄和车道具有独特的价值,因为你不能在同一场比赛中同时拥有这两个。所以我不确定该怎么做。有没有办法将一组整数放入数组中,如果有重复的数字,交换删除它们并立即生成新的?这只是一个猜测。

第二个问题是我的种子是时间,那么有没有办法让程序每次生成一行时等待1秒?

0 投票
1 回答
270 浏览

python-2.7 - 用于 Kernighan-Lin 和模拟退火算法的 python 中的随机数生成?

使用 Python 的(2.7)默认(Mersenne Twister)random() 函数作为 Kernighan-Lin 算法的随机数生成器是一个好主意(就生成的数字的质量和所需的 CPU 时间而言)?有更好的方法吗?

此外,在相同的上下文中, random() 函数如何为模拟退火算法生成 0 到 1 之间的数字?

0 投票
1 回答
69 浏览

c++ - 使用 Mersenne twister 随机双生成的性能问题

我有以下代码:

然后我有:

仅此代码,在 4GB RAM 上执行需要惊人的 25-28 秒。我记得每次使用 Mersenne twister 时都会阅读一些关于实例化新对象的内容,但如果这是问题所在,我应该如何改进呢?当然,这可以更快。

0 投票
1 回答
53 浏览

random - 寻找在并行 PRNG 中需要 Matsumoto 的 DCMT 算法的演示

“伪随机数生成器的动态创建”</a>中,Matsumoto 和 Nishimura 告诫不要出于并行模拟的目的粗心地初始化 MT PRNG,因为并行模拟假设来自不同生成器的数字流彼此独立:

并行机器中 PRNG 的通常方案是为每个进程使用一个相同的 PRNG,并使用不同的初始种子。但是,此过程可能会产生不良碰撞,特别是如果生成器基于线性递归,因为在这种情况下,两个伪随机序列的总和满足相同的线性递归,并且可能出现在第三个序列中。如果并行流的数量与状态空间的大小相比变得很大,则危险变得不可忽视。

要成为一个严重的问题,流的数量必须达到多少?在标准 MT MT19937 的情况下,状态空间相当大......我肯定可以看到 20,000 个序列之间存在模 2 19937 -1 的线性关系,但是 400 个序列之间的生日悖论式关系怎么样?

看起来这实际上是一个严重的问题,因为并行 PRNG 实现确实包括DCMT,但是如果有一些失败的例子,以及当这成为问题时的一些意义,那就太好了。

0 投票
1 回答
1879 浏览

c++ - C++ 在循环中调用伪随机数生成器函数 - 常量种子问题

我是自己编程和学习 C++ 的新手。我设法编写了一个使用“Mersenne Twister”引擎的伪随机数生成器。

当我从 内的循环调用此函数时main(),输出始终相同。我确定这是因为我在函数体中使用的种子,time(0). 因为我每次打电话时都提供相同的种子gen_rand(),所以我得到了相同的结果。

我可以找到解决此问题的一种方法是将函数体嵌入其中,main()而不是使用单独的函数。但由于我可能在其他地方需要随机数,所以外部函数对我更有用。我看到有些人创建了标题来实现类似的结果,但这样的解决方案远远超出了我目前的知识水平。

有没有办法在调用外部函数之前启动种子并让函数使用这个过程来生成随机数?

下面是我使用的循环: