C# 随机数显示2个数字,而它应该只显示一个
我正在玩生成随机数的游戏,我可以让它们生成,尽管我的控制台是.writeline(randomList[I]);似乎循环两次,然后显示两个结果,每个循环应该只显示一个值,用户应该按任意键才能获得下一个结果。有人能给我们一些启示吗?谢谢C# 随机数显示2个数字,而它应该只显示一个,c#,C#,我正在玩生成随机数的游戏,我可以让它们生成,尽管我的控制台是.writeline(randomList[I]);似乎循环两次,然后显示两个结果,每个循环应该只显示一个值,用户应该按任意键才能获得下一个结果。有人能给我们一些启示吗?谢谢 class Program { static void Main(string[] args) { GenerateRandomNumbers(); } private static void GenerateRan
class Program
{
static void Main(string[] args)
{
GenerateRandomNumbers();
}
private static void GenerateRandomNumbers()
{
//Initialize an array
int[] randomList = new int[1000];
//Initialize an instance of random class
Random rnd = new Random();
// integer variable
int counter = 0;
while (counter < 1000)
{
//store random num
int random = rnd.Next(1, 1001);
if (Array.IndexOf(randomList, random) <= 0)
{
//store random number into Array
randomList[counter] = random;
counter++;
}
}
//output elements in Array
for (int i = 0; i < 1000; i++)
{
Console.WriteLine(randomList[i]);
Console.Read();
}
//output number of elements in Array
// Console.WriteLine(counter);
Console.Read();
}
类程序
{
静态void Main(字符串[]参数)
{
GenerateRandomNumbers();
}
私有静态void GenerateRandomNumbers()
{
//初始化数组
int[]随机列表=新int[1000];
//初始化random类的实例
随机rnd=新随机();
//整数变量
int计数器=0;
同时(计数器<1000)
{
//存储随机数
int random=rnd.Next(11001);
如果(Array.IndexOf(randomList,random)解决方案是在循环中使用Console.ReadLine()而不是Console.Read()一些键快速连续生成两个字符,这可能会导致Console.Read()
快速返回两次。至于生成随机数,您似乎在生成1到1000之间的数字,以填充数组中的1000个插槽,并在过程中检查冲突。您会发现,每次连续加法,冲突的几率都会增加到近100%。更好的方法是只需在之前创建1000个值然后执行随机洗牌。没有碰撞,性能更好。研究Fisher-Yates等算法。