wit*_*ith 4 c# random perlin-noise
鉴于一直播种随机:
Random r = new Random(0);
呼叫r.Next()始终如一地产生相同的系列; 那么有没有办法快速发现该系列中的第N个值,而不调用r.Next() N次?
我的场景是通过创建的大量值r.Next().应用程序偶尔会在任意索引处从数组中读取值.我想通过消除数组来优化内存使用,而是根据需要生成值.但是,强迫r.Next()500万次模拟阵列的第500万个索引比存储阵列更昂贵.是否有可能缩短你的方式到Nth .Next()值,没有/少循环?
我不知道BCL中使用的PRNG的细节,但我的猜测是你会发现很难/不可能为系列的第N个值找到一个漂亮的,封闭形式的解决方案.
这个解决方法怎么样:
使随机数生成器的种子成为所需的索引,然后选择第一个生成的数字.这同样是"确定性的",并且在O(1)空间中为您提供了广泛的范围.
static int GetRandomNumber(int index)
{
return new Random(index).Next();
}
Run Code Online (Sandbox Code Playgroud)