创建不带重复项的数组c#

创建不带重复项的数组c#,c#,arrays,duplicates,C#,Arrays,Duplicates,这是我现在的代码,我需要帮助,这样它就不会重复。我需要这个给学校,所以如果你能解释一下,这将是有益的。顺便说一句,不要在意瑞典人的评论 int temp; int[] myArray = new int[20]; // Array med 20 tal Random random = new Random(); // Skapar metoden "Random" for (int i = 0; i < myArray.Le

这是我现在的代码,我需要帮助,这样它就不会重复。我需要这个给学校,所以如果你能解释一下,这将是有益的。顺便说一句,不要在意瑞典人的评论

        int temp;

        int[] myArray = new int[20]; // Array med 20 tal
        Random random = new Random(); // Skapar metoden "Random"
        for (int i = 0; i < myArray.Length; i++) // Forloop med 20 positioner
        {

            myArray[i] = random.Next(1, 100); // Ger random värden till dessa 20 positionerna
            for (int j = 0; j < myArray.Length; j++)
            {
                if (myArray[i] > myArray[j]) // Array [i] större än Array [j]
                {
                    //temp = myArray[j];
                    //myArray[j] = myArray[i];  
                    //myArray[i] = temp;

                }
            }
            Console.Write(myArray[i] + " ");
        }
int-temp;
int[]myArray=新的int[20];//阵列med 20 tal
Random Random=新的Random();//斯卡帕·梅托登“随机”
for(int i=0;imyArray[j])//数组[i]störreän数组[j]
{
//temp=myArray[j];
//myArray[j]=myArray[i];
//myArray[i]=温度;
}
}
Write(myArray[i]+“”);
}

您可以尝试linq to.Distinct()并将其转换为数组use.ToArray()


您可以尝试linq to.Distinct()并将其转换为数组use.ToArray()


由于数组的大小正好等于随机值范围(即20),因此每个数字只会得到一次。使用
Enumerable.Range
创建每个数字是最简单的,只需更改它们出现的顺序

可以通过
OrderBy()
更改顺序,而此处使用的是random

这一切都基于
IEnumerable
。因此,需要将其放入一个数组中,只需调用
ToArray()
即可

我不是你的老师,但希望你仍能自己玩,阅读文档,最后用自己的语言表达出来


更改了问题,现在随机范围大于数组大小。

最好使用
IEnumerable
,在那里您可以获得最强大的工具

// let's create inifite number of random values:
// note that the Random instance needs to be created only once,
// so it's put into a field.

private Random random = new Random();

public IEnumerable<int> InfiniteRandomValues()
{
  while (true)
  {
    yield return random.Next(1, 100);
  }
}

public int[] GetUniqueRandomValues(int numberOfValues)
{
  return InfiniteRandomValues()
    // only uninque values
    .Distinct()
    // generate the requested number of distinct values
    .Take(numberOfValues)
    // put it into an array.
    .ToArray();
} 

由于数组的大小正好等于随机值范围(即20),因此每个数字只会得到一次。使用
Enumerable.Range
创建每个数字一次最简单,只需更改它们的显示顺序

可以通过
OrderBy()
更改顺序,而此处使用的是random

这一切都基于
IEnumerable
。因此,需要将其放入一个数组中,只需调用
ToArray()
即可

我不是你的老师,但希望你仍能自己玩,阅读文档,最后用自己的语言表达出来


更改了问题,现在随机范围大于数组大小。

最好使用
IEnumerable
,在那里您可以获得最强大的工具

// let's create inifite number of random values:
// note that the Random instance needs to be created only once,
// so it's put into a field.

private Random random = new Random();

public IEnumerable<int> InfiniteRandomValues()
{
  while (true)
  {
    yield return random.Next(1, 100);
  }
}

public int[] GetUniqueRandomValues(int numberOfValues)
{
  return InfiniteRandomValues()
    // only uninque values
    .Distinct()
    // generate the requested number of distinct values
    .Take(numberOfValues)
    // put it into an array.
    .ToArray();
} 

最简单的是,看起来你可能想

private static Random rng = new Random(); //class level definition

var myArray = Enumerable.Range(1, 20).OrderBy(X => rng.Next()).ToArray();
或者,如果这是为了学校,你需要证明你的代码。。。用数字1到20填充一个数组,然后使用a随机化数组的顺序


请参阅:

最简单的一点是,看起来您可能想要这样做

private static Random rng = new Random(); //class level definition

var myArray = Enumerable.Range(1, 20).OrderBy(X => rng.Next()).ToArray();
或者,如果这是为了学校,你需要证明你的代码。。。用数字1到20填充一个数组,然后使用a随机化数组的顺序


请参阅:

使用
HashSet
而不是
int
数组,然后执行
HashSet.ToArray()
best me to it dcg:)是的,如果你不关心元素的顺序,哈希集是你最好的选择。如果这是一项学校任务,那么仅仅使用
HashSet
是不够的,而是要显示它背后的逻辑。如果数组的大小为20,那么你的随机数范围是[1;21],并且你不想要任何重复的,为什么你需要随机数?看起来更像是需要将元素1到20的序列混洗。看起来你想让数字1-20按随机顺序排列。所以另一种方法是按顺序填充数组,然后洗牌。例如,使用
array=array.OrderBy(x=>random.Next()).ToArray()
使用
HashSet
而不是
int
数组,然后执行
HashSet.ToArray()
best me to it dcg:)是的,如果你不关心元素的顺序,哈希集是你最好的选择。如果这是一项学校任务,那么仅仅使用
HashSet
是不够的,而是要显示它背后的逻辑。如果数组的大小为20,那么你的随机数范围是[1;21],并且你不想要任何重复的,为什么你需要随机数?看起来更像是需要将元素1到20的序列混洗。看起来你想让数字1-20按随机顺序排列。所以另一种方法是按顺序填充数组,然后洗牌。例如,使用
array=array.OrderBy(x=>random.Next()).ToArray()这是为了学校,所以我想他应该在没有LINQIt的情况下做这件事,因为LINQIt是为了学校,所以我想他应该在没有Linqt的情况下做这件事。这真的是一个问题的答案,其中提到了这是为了学校,并要求解释。我想这对一个在校学生来说很难理解。我尽了最大的努力。这是一个问题的答案,其中提到了我想这对一个在校学生来说是很难理解的。我尽了最大的努力。
private static Random rng = new Random(); //class level definition

var myArray = Enumerable.Range(1, 20).OrderBy(X => rng.Next()).ToArray();