我的转移有问题.我有一个整数数组.数组中总是有3个整数.我将数组中的这些整数传递给分拣机.我想随机移动这些整数.示例:我在数组中传递整数1,2,3.我希望它随机化并以随机顺序返回值1,2,3.它确实随机化,但是当我连续三次调用该函数时,它返回相同顺序类型的整数.
示例:我调用该函数3次.[1,2,3] [4,5,6] [7,8,9]当它进行排序时,它总是返回以相同顺序排列的整数.像这样[2,1,3] [5,4,6] [8,7,9]我想让它随机返回那些对,而不是某种类型的顺序.
这是我的代码.
private Array returnRandomInts(int[] i)
{
Random rand = new Random();
int c = 0;
int r = rand.Next(10);
int prev = 0;
int current = 0;
int temp;
while (c < r)
{
current = rand.Next(0, 3);
if (current != prev)
{
temp = i[prev];
i[prev] = i[current];
i[current] = temp;
c++;
}
}
return i;
}
Run Code Online (Sandbox Code Playgroud)
这是我怎么称呼它
returnRandomInts(index);
textBox1.Text = textBox1.Text + index[0].ToString() + " " + index[1].ToString() + " " + index[2].ToString() + ", ";
Run Code Online (Sandbox Code Playgroud)
他们总是按照一定的顺序.谢谢你的帮助.
Random在调用函数时,您始终在创建新实例.这使用时间依赖的种子.如果您快速连续调用该函数3次,则可能会使用相同的值播种,因此您将获得相同的伪随机序列.
而不是Random在函数中实例化,创建rand一个类成员变量并在类构造函数中初始化它一次.这样,它将只播种一次,并将提供适当的伪随机序列.