c#从数组中删除重复项 int[]RandArray=newint[6]; 随机随机数=新随机数(); 用于(int计数器=0;计数器
这个程序生成6个从1到49的随机数。 目前,它两次生成相同的数字。如何使其不重复任何数字?这段代码可以改进吗?您可以使用存储到目前为止生成的数字。HashSet只会在不包含新生成的数字的情况下添加该数字。像这样:c#从数组中删除重复项 int[]RandArray=newint[6]; 随机随机数=新随机数(); 用于(int计数器=0;计数器,c#,arrays,C#,Arrays,这个程序生成6个从1到49的随机数。 目前,它两次生成相同的数字。如何使其不重复任何数字?这段代码可以改进吗?您可以使用存储到目前为止生成的数字。HashSet只会在不包含新生成的数字的情况下添加该数字。像这样: int[] RandArray = new int[6]; Random randNumber = new Random(); for (int Counter = 0; Counter < RandArray.Length; Counter++
int[] RandArray = new int[6];
Random randNumber = new Random();
for (int Counter = 0; Counter < RandArray.Length; Counter++)
{
RandArray[Counter] = randNumber.Next(1,50);
}
Console.WriteLine(RandArray[0]);
Console.WriteLine(RandArray[1]);
Console.WriteLine(RandArray[2]);
Console.WriteLine(RandArray[3]);
Console.WriteLine(RandArray[4]);
Console.WriteLine(RandArray[5]);
Console.ReadLine();
相反,如果希望数字按升序排列,可以这样做:
int[] integer_array = numbers.ToArray();
您可以使用存储到目前为止生成的数字。HashSet只会在不包含新生成的数字的情况下添加该数字。像这样:
int[] RandArray = new int[6];
Random randNumber = new Random();
for (int Counter = 0; Counter < RandArray.Length; Counter++)
{
RandArray[Counter] = randNumber.Next(1,50);
}
Console.WriteLine(RandArray[0]);
Console.WriteLine(RandArray[1]);
Console.WriteLine(RandArray[2]);
Console.WriteLine(RandArray[3]);
Console.WriteLine(RandArray[4]);
Console.WriteLine(RandArray[5]);
Console.ReadLine();
相反,如果希望数字按升序排列,可以这样做:
int[] integer_array = numbers.ToArray();
这回答了您的标题问题。
使用
Distinct
LINQ操作符,它将删除重复的元素
这回答了你的身体问题要多次不生成同一个数字,请将数字存储在
哈希集中,并检查每个迭代是否以前生成过数字,如果需要,请重新滚动。这回答了您的标题问题。
使用Distinct
LINQ操作符,它将删除重复的元素
这回答了你的身体问题
要多次不生成相同的数字,请将数字存储在一个哈希集中,并检查每个迭代是否以前生成过数字,如果需要,请重新滚动。您可以为创建的每个数字检查重复的数字:
int[] integer_array = numbers.OrderBy(x => x).ToArray();
int[]RandArray=newint[6];
随机随机数=新随机数();
用于(int计数器=0;计数器
您可以为创建的每个数字检查重复项:
int[] integer_array = numbers.OrderBy(x => x).ToArray();
int[]RandArray=newint[6];
随机随机数=新随机数();
用于(int计数器=0;计数器
您可以创建一个从1到50的数字范围,随机排序,然后将该范围内的6个数字放入列表:
int[] RandArray = new int[6];
Random randNumber = new Random();
for (int Counter = 0; Counter < RandArray.Length; Counter++) {
// Loop until you find an unused number
bool found;
do {
// Get a random number
int num = randNumber.Next(1,50);
// Look through the numbers picked so far
found = false;
for (int i = 0; i < Counter; i++) {
found |= num == RandArray[i];
}
// If the number was found go back and pick a new one
} while(found);
// Put the number in the array
RandArray[Counter] = num;
}
foreach (int n in RandArray) {
Console.WriteLine(n);
}
Console.ReadLine();
.NET Fiddle-您可以创建一个从1到50的数字范围,随机排序,然后将该范围内的6个数字放入列表:
int[] RandArray = new int[6];
Random randNumber = new Random();
for (int Counter = 0; Counter < RandArray.Length; Counter++) {
// Loop until you find an unused number
bool found;
do {
// Get a random number
int num = randNumber.Next(1,50);
// Look through the numbers picked so far
found = false;
for (int i = 0; i < Counter; i++) {
found |= num == RandArray[i];
}
// If the number was found go back and pick a new one
} while(found);
// Put the number in the array
RandArray[Counter] = num;
}
foreach (int n in RandArray) {
Console.WriteLine(n);
}
Console.ReadLine();
.NET Fiddle-感谢您的快速回复。我忘了问我怎样才能把最终的数字列表按升序排列?@HaseebAhmed,我更新了我的答案来展示如何排列列表。谢谢你的快速回复。我忘了问我如何将最终的数字列表按升序排列?@HaseebAhmed,我更新了我的答案,以显示如何对列表进行排序。你不需要Contains()
,因为如果整数已经在集合中,它就不会被添加。你不需要Contains()
因为整数已经在集合中,它就不会被添加。