随机整数移位

dea*_*end 3 c#

我的转移有问题.我有一个整数数组.数组中总是有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)

他们总是按照一定的顺序.谢谢你的帮助.

pad*_*ddy 8

Random在调用函数时,您始终在创建新实例.这使用时间依赖的种子.如果您快速连续调用该函数3次,则可能会使用相同的值播种,因此您将获得相同的伪随机序列.

而不是Random在函数中实例化,创建rand一个类成员变量并在类构造函数中初始化它一次.这样,它将只播种一次,并将提​​供适当的伪随机序列.