gpt4 book ai didi

c# - Random.Next() - 找到第 N 个 .Next()

转载 作者:太空狗 更新时间:2023-10-30 00:27:44 25 4
gpt4 key购买 nike

给定一个持续播种的随机数:

Random r = new Random(0);

调用 r.Next() 始终产生相同的序列;那么有没有一种方法可以快速发现该系列中的第 N 个值,而无需调用 r.Next() N 次?

我的场景是通过 r.Next() 创建的大量值。该应用偶尔会从数组中任意索引处读取一个值。我想通过消除数组来优化内存使用,而是根据需要生成值。但是暴力破解 r.Next() 500 万次来模拟数组的第 5 百万个索引比存储数组更昂贵。是否有可能在没有/减少循环的情况下缩短到第 N 个 .Next() 值的方式?

最佳答案

我不知道 BCL 中使用的 PRNG 的细节,但我猜你会发现很难/不可能为 N 找到一个很好的封闭形式的解决方案-系列的第值。

这个解决方法怎么样:

种子作为随机数生成器所需的索引,然后选择第一个生成的数字。这同样是“确定性的”,并为您提供了 O(1) 空间内的广阔范围。

static int GetRandomNumber(int index)
{
return new Random(index).Next();
}

关于c# - Random.Next() - 找到第 N 个 .Next(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5385459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com