首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查数组中的多个元素是否包含相同的值。

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

Stack Overflow用户
提问于 2018-11-25 20:54:44
回答 3查看 1.5K关注 0票数 0

例如,我有一个数组,它会被随机数填充,并将这个称为骰子。

代码语言:javascript
复制
Random rnd = new Random()
int[] dice=new int [5]
for (int i=0;i<dice.length;i++)
{
dice[i]= rnd.next(1,7)
}

现在,为了简单起见,我想问一问,如何才能找出是否有三个实例。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-11-25 22:21:59

使用IDictionary<int,int>

代码语言:javascript
复制
var dict = new Dictionary<int,int>();
foreach (int i in dice)
    if(!dict.ContainsKey(i))
        dict.Add(i,1);
    else dict[i]++;

(可选)可以使用Linq获取多次出现的数字

代码语言:javascript
复制
var duplicates = dict.Where( x=>x.Value > 1 )
  .Select(x=>x.Key)
  .ToList();
票数 2
EN

Stack Overflow用户

发布于 2018-11-25 21:06:40

代码语言:javascript
复制
    // 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);
票数 1
EN

Stack Overflow用户

发布于 2018-11-25 21:00:55

给出一个完全不同的方法,而不是:

代码语言:javascript
复制
Random rnd = new Random();
int[] dice=new int[5];
for (int i=0;i<dice.length;i++)
{
    dice[i]= rnd.next(1,7);
}

试试这个:

代码语言:javascript
复制
Random rnd = new Random();
int[] valueCount = new int[6];
for (int i=0; i<5; i++)
{
    valueCount[rnd.next(0,6)]++;
}

//you have kept track of each value.
if (valueCount.Any(c => c == 3))
    //3 of a kind

你当然可以把两者结合起来..。

请注意,这对于为计数事件而优化的非常特定的规则引擎是有效的。

如果你真的想要一张卡片/骰子游戏,你需要重新考虑规则引擎,用“它是: 1,2,3,4,5,6,并按照这个顺序吗?”

为此,请尝试:How to implement a rule engine?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53471881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档