有没有办法预测一些Random类而不经过rnd.NextDouble()循环?
我现在正在使用此代码:
Random rnd = new Random(SOME_STATIC_SEED);
//I need to get the 1000000'th random number:
for (ulong i = 0; i < 1000000; i++)
//I need to avoid this loop and get the result in a linear time!
{
rnd.NextDouble();
}
double iNeedThisNumber = rnd.NextDouble();
如何在没有循环的情况下获得它?我需要使用.Net的System.Random类算法给出相同的确切数字。
据称已经解决了:
这是我的代码!!
public static ulong GetNumberFromSequence(int seq)
{
Random rnd = new Random(seq);
return (ulong)(rnd.NextDouble() * 99999999999999) ^ (ulong)seq;
}
答案 0 :(得分:1)
看看这是否适合你
在随机数生成器中使用种子作为所需索引,然后选择第一个生成的数字。
Random rnd = new Random(required_index_as_seed).Next();
double iNeedThisNumber = rnd.NextDouble();
答案 1 :(得分:0)
您可以预先计算给定种子的值并将其缓存在列表或数据库中,也可以使用可以在线性时间内生成索引值的备用伪随机数生成器。