C# 检查数组中的多个元素是否包含相同的值

C# 检查数组中的多个元素是否包含相同的值,c#,arrays,algorithm,random,C#,Arrays,Algorithm,Random,例如,我有一个数组,里面填充了随机数,我将把这个称为骰子 Random rnd = new Random() int[] dice=new int [5] for (int i=0;i<dice.length;i++) { dice[i]= rnd.next(1,7) } Random rnd=new Random() 整数[]骰子=新整数[5] 对于(int i=0;i给出一个完全不同的方法,而不是: Random rnd = new Random(); int[] dice=new

例如,我有一个数组,里面填充了随机数,我将把这个称为骰子

Random rnd = new Random()
int[] dice=new int [5]
for (int i=0;i<dice.length;i++)
{
dice[i]= rnd.next(1,7)
}
Random rnd=new Random()
整数[]骰子=新整数[5]

对于(int i=0;i给出一个完全不同的方法,而不是:

Random rnd = new Random();
int[] dice=new int[5];
for (int i=0;i<dice.length;i++)
{
    dice[i]= rnd.next(1,7);
}
Random rnd=new Random();
int[]骰子=新的int[5];

对于(int i=0;i给出一个完全不同的方法,而不是:

Random rnd = new Random();
int[] dice=new int[5];
for (int i=0;i<dice.length;i++)
{
    dice[i]= rnd.next(1,7);
}
Random rnd=new Random();
int[]骰子=新的int[5];
for(inti=0;i
//准备(基本上是您的代码)
var rnd=新随机数();
var dice=新整数[5];
for(int i=0;id,d=>1/*每个命中计数为1*/);
//显示所有骰子及其计数
foreach(groupedByCount中的变量g)
Console.WriteLine(g.Key+:“+g.Count());
//用3个或更多的骰子显示骰子
foreach(groupedByCount.Where(g=>g.Count()>=3)中的变量g)
Console.WriteLine(“3次或以上:+g.Key”);
//准备(基本上是您的代码)
var rnd=新随机数();
var dice=新整数[5];
for(int i=0;id,d=>1/*每个命中计数为1*/);
//显示所有骰子及其计数
foreach(groupedByCount中的变量g)
Console.WriteLine(g.Key+:“+g.Count());
//用3个或更多的骰子显示骰子
foreach(groupedByCount.Where(g=>g.Count()>=3)中的变量g)
Console.WriteLine(“3次或以上:+g.Key”);
使用
i词典

使用
i词典


int[]骰子=新骰子[5]
不确定是否compiles@HanjunChen在我的原始代码中,我将骰子作为一个类,因此我的数组是这样的(public dice[]dies=new dice[5];),这就是为什么我在写问题时犯了一个非常小的错误。然而,你在问题中看到的唯一一件事就是这个!非常有用骰子=新骰子[5]
不确定是否compiles@HanjunChen在我的原始代码中,我将骰子作为一个类,因此我的数组是这样的(public dice[]dies=new dice[5];),这就是为什么我在写问题时犯了一个很小的错误。但是你在问题中看到的唯一一件事就是这个!真的很有用
    // preparation (basically your code)
    var rnd = new Random();
    var dice = new int[5];

    for (int i=0; i < dice.Length; i++)
    {
        dice[i]= rnd.Next(1,7);
    }

    // select dices, grouped by with their count
    var groupedByCount = dice.GroupBy(d => d, d => 1 /* each hit counts as 1 */);

    // show all dices with their count
    foreach (var g in groupedByCount)
        Console.WriteLine(g.Key + ": " + g.Count());

    // show the dices with 3 or more 
    foreach (var g in groupedByCount.Where(g => g.Count() >= 3))
        Console.WriteLine("3 times or more: " + g.Key);
var dict = new Dictionary<int,int>();
foreach (int i in dice)
    if(!dict.ContainsKey(i))
        dict.Add(i,1);
    else dict[i]++;
var duplicates = dict.Where( x=>x.Value > 1 )
  .Select(x=>x.Key)
  .ToList();