使用梅森扭曲器的 1D 噪声在不同设备上给出不同的结果 [英] 1D Noise using Mersenne twister giving different results on different devices

查看:42
本文介绍了使用梅森扭曲器的 1D 噪声在不同设备上给出不同的结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 Mersenne Twister 生成具有 1D perlin 噪声的 2D 地形以获取随机数.我的第一个想法是使用 Mersenne Twister 将在任何给定硬件上使用相同的种子始终为我提供相同的结果.但是当我比较不同设备上的值/地形时,它会给我不同的结果.(它适用于 IOS、OSX 和 MAC,但不适用于 WP8).

I'm generating 2D terrain with 1D perlin noise using Mersenne Twister to for random numbers. My first thought was using Mersenne Twister will give me always the same results with same seed on any given hardware. But when I compare the values/terrain on different devices it gives me different results. (It worked for IOS, OSX and MAC, but not for WP8).

代码:

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
        }
    }

...

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

Am I misunderstanding Mersenne Twister or am I doing something wrong? How could I get the same terrain/values on every device/hardware?

感谢您的时间!

推荐答案

看到这个问题:

C++11 交叉编译器/标准库随机分布再现性

std::uniform_real_distribution 不能保证在不同的编译器中给出相同的结果.

std::uniform_real_distribution is not guaranteed to give same results across different compilers.

这篇关于使用梅森扭曲器的 1D 噪声在不同设备上给出不同的结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆