问题标签 [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 回答
2256 浏览

random - Mersenne Twister:播种和可视化

我正在使用从CenterSpace下载的 Mersenne Twister 的 C# 实现。我有两个问题:

  1. 无论我如何播种算法,它都没有通过DieHard 测试,我的意思是我的 p 值得到了很多 1 和 0。我对 269 个 p 值的 KStest 也是 0。好吧,我不能完全解释 p 值,但我认为结果中的几个 1 和 0 是坏消息。
  2. 我被要求直观地显示数字的随机性。所以我在生成数字时绘制它们,这似乎根本不是随机的。这是几秒钟后和几秒钟后结果的两张截图。正如您在第二个屏幕截图中看到的那样,数字落在一些平行线上。我尝试了不同的算法将数字映射到点。它们都产生平行线,但角度不同!这就是我将数字映射到这些屏幕截图的点的方式new Point(number % _canvasWidth, number % _canvasHeight):正如您可能猜到的,视觉结果取决于表单的宽度和高度,这是一个灾难性的结果。

以下是我尝试播种算法的几种方法:

  1. 用户输入。我输入一些数字以将算法播种为 int 数组。
  2. 算法本身生成的随机数!!
  3. 一个数组new Guid().GetHashCode()

我在这里想念什么?我应该如何播种算法?我怎样才能让它通过 DieHard?

0 投票
2 回答
517 浏览

java - 为什么这个类不可序列化?

我在http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/VERSIONS/JAVA/MTRandom.java使用 Mersenne-Twister 实现作为默认的替代品java.util.Random班级。但是,四个字段(一个 int、一个 boolean 和两个 byte[])被标记为transient. 这意味着我无法在不实现自定义功能的情况下序列化此类的对象。

问题是,是否有任何理由将这些字段标记为瞬态?那里是否有任何代码包含从文件中读取对象时没有任何意义的信息?我transient从字段中删除了修饰符,它似乎工作正常,但我没有对它进行深入测试,所以可能会有它坏掉的情况吗?

就个人而言,我不明白为什么,因为课堂上所做的都是算术。

0 投票
2 回答
5651 浏览

python - Mersenne Twister 在 Python 中的开源实现?

是否有任何好的 Mersenne Twister 开源实现和 Python 中其他好的随机数生成器可用?我想用于教授数学和计算机科学专业?我也在寻找相应的理论支持。

编辑: Mersenne Twister 的源代码很容易以各种语言提供,例如 C ( random.py) 或伪代码 (Wikipedia),但我在 Python 中找不到。

0 投票
0 回答
185 浏览

python - wiki mersenne twister 伪代码的功能正确性

谁能告诉我此页面上的 mersenne twister 伪代码是否与此处的代码相同?如果它们不相同,哪一个是正确的?

0 投票
2 回答
2222 浏览

thread-safety - 线程安全的梅森捻线机

在寻找线程安全的随机生成器时,我发现了一个 mersenne twister 生成器类,作者说它是线程安全的:

http://www.umiacs.umd.edu/~yangcj/mtrnd.html

但是在研究了代码之后,我看不出它是否是安全线程。那里没有任何类型的锁或任何类似于锁变量的东西。

这个实现真的是线程安全的吗?如果是这样,魔法是什么?

0 投票
1 回答
714 浏览

ruby - Ruby 1.9.2 中的分布式顺序随机数生成

Ruby 1.9.2 中的Random类保证以相同的顺序生成随机数,给定特定的种子和范围。例如:

但是假设我想在另一台计算机上生成序列中的下一个数字(而不重新生成序列中的早期数字)。鉴于先前的输出,这应该是可能的。有没有办法在Random课堂上做到这一点?还是我必须编写自己的Mersenne twister实现?

[编辑:正如下面评论中所指出的,实际上不可能Random仅从输出中确定实例的状态,因为只有部分状态(特别是低 32 位)用于输出。]

0 投票
9 回答
6199 浏览

delphi - Delphi中的随机函数有多可靠

我正在编写一个在 Delphi(必须是 Delphi)中编写统计测试的程序,我听说 Random 功能有些奇怪。您必须在程序启动时调用 randomize 来随机化 random 函数的种子。

我想知道随机函数(在调用 randomize 之后)是否足够随机以进行统计测试,或者是否需要 Mersenne twister?有没有人对随机的实际实现有任何见解,可以告诉我这有多重要?

0 投票
4 回答
3510 浏览

algorithm - mersenne twister - 有没有办法跳转到特定状态?

我有点不确定这个问题的正确论坛。它介于理论补偿之间。科学/数学和编程。

我使用 Mersenne-Twister 生成伪随机数。现在,从给定的种子开始,我想跳到序列中的第 n 个数字。

我看过这个:http ://www-personal.umich.edu/~wagnerr/MersenneTwister.html ,一种方案可能如下:

假设,我只需要来自特定种子s的完整随机序列中的前N​​个数字。 我将序列拆分为p个子序列,遍历所有 N 个数字,并将随机数生成器的状态向量保存在每个子序列的开头。 现在要达到第n个数字,我会看到n落在第k个子序列中,我将加载该子序列的状态向量并生成m个连续随机数,其中第 k 个子序列中的第 m 个数字是与完整序列中的第 n 个数字相同( n = m + (k-1) * N/p )。

但是状态向量是 624 x 4 字节长!我想知道实际上是否可以跳转到 mersenne-twister 生成的序列中的任意元素。

0 投票
9 回答
21748 浏览

c++ - 如何从 rand() 缩小数字?

以下代码每秒输出一个随机数:

我如何缩小这些数字的大小,使它们始终在 0-100 的范围内?

0 投票
1 回答
395 浏览

random - 重置梅森捻线机

我认为这个问题的答案很简单,但目前它似乎完全是在暗示我。

我正在使用 Mersenne Twister(在此处实现http://www.bedaux.net/mtrand/)来生成随机数。

我需要它能够在同一个程序中连续两次生成相同的“随机”数字序列。我正在使用相同的 void seed(const unsigned long*, int size); 具有相同值集的函数,希望这将重置生成器并允许我再次生成相同的值。具体来说:

只是为了得到这个测试和工作。

我想知道是否有人以前遇到过这个问题。

或者知道我做错了什么。