写入文件随机数c#

cMi*_*nor 0 c# random

可能重复:
随机数生成器不按我计划的方式工作(C#)

我在c#中有这个代码,但是我得到的结果是相同的数字,这有什么不对?

像a21,a21,a21 ....

        String c = "";
        int randomNumber = 0;
        for (int i = 0; i < 20; i++)
        {
            randomNumber = RandomNumber(0, 617);
            c += "a " + randomNumber + ", ";                    
        }
        file.WriteLine(c);



I am using this function

public static int RandomNumber(int min, int max)
    {
        Random random = new Random();
        return random.Next(min, max);
    }
Run Code Online (Sandbox Code Playgroud)

Tim*_*ter 6

您应该将Randomas参数传递给您的函数.虽然你的功能没有附加价值了.

var rnd = new Random();
for (int i = 0; i < 20; i++)
{
    randomNumber = RandomNumber(rnd ,0, 617);
    c += "a " + randomNumber + ", ";                    
}

public static int RandomNumber(Random rnd, int min, int max)
{
    return rnd.Next(min, max);
}
Run Code Online (Sandbox Code Playgroud)

每次new Random()使用时钟初始化它.这意味着在紧密循环中,您可以多次获得相同的值.您应该保留单个 Random实例并继续在同一实例上使用Next.

/sf/answers/53760101/

编辑:我在你的评论中读到你想要在给定范围内创建20个唯一数字,这里有一种方法HashSet<int>:

HashSet<int> uniqueNumber = new HashSet<int>();
var rnd = new Random();
while(uniqueNumber.Count<20){
    var nextNum = rnd.Next(0, 617);
    uniqueNumber.Add(nextNum);
}
Run Code Online (Sandbox Code Playgroud)