创建不带重复项的数组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();