【发布时间】:2019-05-30 12:49:03
【问题描述】:
我有这个方法Shuffle,它假设返回一组随机数,这些随机数在上述方法中显示,但数字需要以混合格式显示。
第一种方法效果很好,因为数字在范围集中正确显示,但是这种方法 Shuffle 没有以混合格式返回它们。
例子:
第一个方法返回:1, 2, 3, 4, 5
这个方法需要返回2, 1, 4, 5, 3
public int[] Shuffle(int[] Sequence)
{
int[] Array = new int[Sequence.Length];
for(int s=0; s < Array.Length-1; s++){
int GenObj = GenerateAnotherNum (0, Array.Length + 1);
Array[s] = Sequence[GenObj];
Sequence[GenObj] = Array[s];
}
return Sequence;
}
【问题讨论】:
-
不清楚你在问什么。这段代码是什么?这是第一种还是第二种方法?那么另一种方法是什么?如果应该随机打乱,为什么你希望你的方法返回一个特定的序列?
-
你应该小心命名你的变量。标准方法是使用初始小写(camelCase)命名局部变量和参数。这将有助于避免与关键字发生冲突,例如
Array... -
这段代码是Fisher-Yates shuffle方法。我只是举了一个序列应该返回什么的例子。 @ArthurAttout
-
交换程序不正确,应该是
int h = Array[s]; Array[s] = Sequence[GenObj]; Sequence[GenObj] = h; -
Array[s] = Sequence[GenObj]; Sequence[GenObj] = Array[s];没有做任何事情。您需要交换值。
标签: c#