螺纹安全的Mersenne Twister
-
01-10-2019 - |
题
寻找线程安全的随机发电机,我发现了一个Mersenne Twister Generator类,作者说如果线程安全:
http://www.umiacs.umd.edu/~yangcj/mtrnd.html
但是在研究了代码之后,我看不到它是安全的线程。没有任何类似于锁的锁的锁。
此实现真的线程安全吗?如果是这样,什么是魔术?
解决方案
从某种意义上说,可以同时使用两个不同的mersennetwist对象,这似乎是线程安全。您不能在两个线程中使用相同的对象,而不会使用锁定。
我猜作者谈论的原始C版本谈论了使用的全局或静态变量,因此这是一个改进。
其他提示
讨论了如何在多个流Mersenne Twister处制作多式媒体旋风随机数生成器,以及在 http://theo.phys.sci.hiroshima-u.ac.jp/~ishikawa/prng/mt_stream_en.html. 。该方法在Mersenne Twister序列中的点开始多个流,这些流被广泛分开,确保多个流相互独立,并且不会产生相同的随机数序列。不需要锁,因此可以按平行代码进行潜在的瓶颈;单独的流由ID访问。
不隶属于 StackOverflow