Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Mathf.PerlinNoise()是否依赖于内部随机数生成器?_C#_Unity3d_Random_Perlin Noise - Fatal编程技术网

C# Mathf.PerlinNoise()是否依赖于内部随机数生成器?

C# Mathf.PerlinNoise()是否依赖于内部随机数生成器?,c#,unity3d,random,perlin-noise,C#,Unity3d,Random,Perlin Noise,我使用的是Unity c#,我编写的代码依赖于柏林噪声来确定0到1之间的随机数。我想在我的代码中实现一个特性,允许用户定义一个特定的预定义种子数来用于此,但我不确定Perlin noise函数是否实际使用与random类相同的随机种子 比如,;如果我想使用Mathf.PerlinNoise()生成柏林噪声-如果我总是使用相同的数字设置RNG种子修道院,它是否总是相同的 最小代码示例: Random.InitState(4815162342); float _randomSample =

我使用的是Unity c#,我编写的代码依赖于柏林噪声来确定0到1之间的随机数。我想在我的代码中实现一个特性,允许用户定义一个特定的预定义种子数来用于此,但我不确定Perlin noise函数是否实际使用与random类相同的随机种子

比如,;如果我想使用Mathf.PerlinNoise()生成柏林噪声-如果我总是使用相同的数字设置RNG种子修道院,它是否总是相同的

最小代码示例:

Random.InitState(4815162342);
    float _randomSample = Mathf.PerlinNoise(yada yada yada);

我想用它来制作一个像Minecraft一样的系统,生成一个程序化的游戏世界,让玩家有办法选择一个种子将是非常棒的。在这个代码示例中,玩家选择的种子是电视节目《迷失》中的数字。(4815162342)

这两件事不相关

唯一改变的是例如
Random.Range
Random.value
的工作方式

如果不使用它,它只会使用基于系统时间的值


Mathf.PerlinNoise
未连接到该设备。实际上,你可以尝试不同的种子,并总是看到相同的柏林结果。事实上,这是在

相同的坐标将始终返回相同的采样值,但平面本质上是无限的,因此通过选择随机区域进行采样,可以轻松避免重复

他们已经给了你一个解决问题的提示:使用不同的偏移量

现在你的种子进场了:只需根据种子选择一个随机偏移量->随机,但对于相同的种子总是相等

Random.InitState(4815162342);
var randomOffsetX = Random.value;
var rabdomOffsetY = Random.value;

var values = new float[25];
for(var x = 0; x < 5; x++)
{
    for(var y = 0; y < 5; y++) 
    {
        values[x*5 + y] = Mathf.PerlinNoise(x + randomOffsetX, y + randomOffsetY);
    }
}
如果我总是使用相同的数字设置RNG种子修道院,它是否总是相同的你试着这么做时发生了什么?
Random.InitState(4815162342);
var value = Random.Range(0f, 1f);