C# 如何检查5个随机数是否相同

C# 如何检查5个随机数是否相同,c#,.net,random,C#,.net,Random,我不知道如何测试5个随机生成的数字是否相同。 到目前为止,我所拥有的只是它们的创造 dice1 = rand.Next(1,7); dice2 = rand.Next(1,7); dice3 = rand.Next(1,7); dice4 = rand.Next(1,7); dice5 = rand.Next(1,7); 在我的第一个答案上编辑,大脑放屁 如果足够容易,您可以执行某种嵌套操作: if ((dice1 == dice2)&&(dice2 == dice3)

我不知道如何测试5个随机生成的数字是否相同。 到目前为止,我所拥有的只是它们的创造

dice1 = rand.Next(1,7);

dice2 = rand.Next(1,7);

dice3 = rand.Next(1,7);

dice4 = rand.Next(1,7);

dice5 = rand.Next(1,7);

在我的第一个答案上编辑,大脑放屁

如果足够容易,您可以执行某种嵌套操作:

if ((dice1 == dice2)&&(dice2 == dice3)&&(dice3 == dice4)&&(dice4 == dice5))
这应该行得通

if(dice1 == dice2)
    if(dice2 == dice3)
        if(dice3 == dice4)
            if(dice4 == dice5)
                //do something...

可能是一种更漂亮的方式,但这将起作用

您可以这样做来生成5个随机骰子卷:

var dice = (from i in Enumerable.Range(0, 5) select rand.Next(1, 7)).ToArray();
或使用流利的语法:

var dice = Enumerable.Range(0, 5).Select(i => rand.Next(1, 7)).ToArray();
这是为了检查他们的平等性:

var first = dice.First(); // or dice[0];
var areSame = dice.Skip(1).All(d => d == first);

您可以使用如下方法:

public static bool AllEqual(params int[] values)
{
    foreach (var value in values)
        if (values[0] != value)
            return false;
    return true;
}
        // if all the dice rolled the same, do something
        if (dice.Distinct().Count() == 1)
        {

        }
然后像这样使用它:

bool allSame = AllEqual(dice1, dice2, dice3, dice4, dice5);

但正如p.s.w.g所示,在一个可枚举元素中生成所有骰子可能更好。

首先,我建议将骰子放入可枚举元素中。P.S.W.G.发布了一个非常优雅的方式来做到这一点,我有点嫉妒,我不会想到的。这就是我的想法:

        var dice = new List<int>();
        for (int i = 0; i < 5; i++)
        {
            dice.Add(rand.Next(1, 7));
        }

将它们放入一个
哈希集中
,然后检查大小是否相同

var dice = Enumerable.Range(0, 5).Select(i => rand.Next(1, 7)).ToArray();
var set = new HashSet<int>(dice);
bool areSame = set.Count == 1; //1 unique value means they are all the same.
var dice=Enumerable.Range(0,5)。选择(i=>rand.Next(1,7)).ToArray();
变量集=新哈希集(骰子);
bool arame=set.Count==1//1唯一值表示它们都是相同的。

小心延迟/延迟执行<代码>骰子可能会在底部的最后一行重新计算(生成不同的第一个值),从而产生不同的值。linq查询在第一次使用时只应执行一次,然后reused@TimS. 说得好。我不认为这是一个大问题,但在这种情况下,它真的是。我添加了
ToArray()
,以使其更为迫切。@Fabske实际上,这不是真的,至少在一般情况下不是这样。在不使用
ToArray()
的情况下尝试我的代码,您会发现通常
dice.First()!=dice.First()
。真的!泰,我学了一个新东西!
        // if all the dice rolled the same, do something
        if (dice.Distinct().Count() == 1)
        {

        }
var dice = Enumerable.Range(0, 5).Select(i => rand.Next(1, 7)).ToArray();
var set = new HashSet<int>(dice);
bool areSame = set.Count == 1; //1 unique value means they are all the same.