可能重复:
随机数生成器不按我计划的方式工作(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)
您应该将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.
编辑:我在你的评论中读到你想要在给定范围内创建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)
| 归档时间: |
|
| 查看次数: |
1924 次 |
| 最近记录: |