C++ 使用Mersenne捻线器产生的1D噪声在不同设备上产生不同的结果

C++ 使用Mersenne捻线器产生的1D噪声在不同设备上产生不同的结果,c++,random,srand,C++,Random,Srand,我正在使用Mersenne Twister生成带有一维柏林噪声的二维地形,以用于随机数。我的第一个想法是使用Mersenne Twister将在任何给定硬件上使用相同的种子始终获得相同的结果。但是,当我比较不同设备上的值/地形时,会得到不同的结果。它适用于IOS、OSX和MAC,但不适用于WP8 代码: 我是误会了梅森龙卷风还是我做错了什么?如何在每个设备/硬件上获得相同的地形/值 谢谢你的时间 请看这个问题: std::统一真实分布不保证在不同的编译器中提供相同的结果。您的设备有不同的字长吗

我正在使用Mersenne Twister生成带有一维柏林噪声的二维地形,以用于随机数。我的第一个想法是使用Mersenne Twister将在任何给定硬件上使用相同的种子始终获得相同的结果。但是,当我比较不同设备上的值/地形时,会得到不同的结果。它适用于IOS、OSX和MAC,但不适用于WP8

代码:

我是误会了梅森龙卷风还是我做错了什么?如何在每个设备/硬件上获得相同的地形/值

谢谢你的时间

请看这个问题:


std::统一真实分布不保证在不同的编译器中提供相同的结果。

您的设备有不同的字长吗?我认为MT19937在32位和64位系统上生成不同的值。我目前正在使用诺基亚lumia 920。我认为它是一个32位cpu Snapdragon S4 MSM8960。另一个设备是正在运行的iPad mini non-retina和macbook pro 32位应用程序。这篇文章建议使用另一个随机生成器:。这个跨平台安全吗?@user3433660那个帖子已经完全过时了。不要用它。@KonradRudolph你能解释一下为什么吗?它为我的地形提供了一些非常好的结果,具有真正跨平台的独立值,并且可以在所有操作系统上运行。
class 1DNoiseTest
{
    typedef std::mt19937 MyRNG;
    MyRNG rng;
1DNoiseTest( unsigned seed )
    {
        rng.seed(seed);
        std::uniform_real_distribution<double> distribution(0.0,1.0);
        for ( unsigned i = 0; i < kMaxVertices; ++i )
        {
            r[ i ] = ( distribution(rng)); error
        }
    }