我想创建一个改组的整数,以便:
如果你想要一个介于0和指定数字之间的所有数字,这个选项提供了一个很好的解决方案:Generating Shuffled Range Using a PRNG Rather Than Shuffling
有什么想法吗?
答案 0 :(得分:1)
您可以使用与链接问题完全相同的算法。只需生成介于0和upperBound - lowerBound + 1
之间的数字,然后将lowerBound
添加到结果中。
e.g。 (使用链接问题的代码):
var upper = 5;
var lower = 3;
foreach (int n in GenerateSequence(upper-lower+1))
{
Console.WriteLine(n+lower);
}
如果希望序列重复(每次不同的混洗),可以在迭代器方法体周围添加while (true)
。