我无法弄清楚如何测试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);
答案 0 :(得分:8)
你可以这样做以产生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);
答案 1 :(得分:2)
if(dice1 == dice2 && dice2 == dice3 && dice3 == dice4 && dice4 == dice5) {
// scream at the random number generator
} else {
}
答案 2 :(得分:1)
编辑,我的第一个答案是大脑放屁。
如果足够容易,你可以做一些嵌套:
if ((dice1 == dice2)&&(dice2 == dice3)&&(dice3 == dice4)&&(dice4 == dice5))
这应该有效
答案 3 :(得分:1)
if(dice1 == dice2)
if(dice2 == dice3)
if(dice3 == dice4)
if(dice4 == dice5)
//do something...
可能是一个更漂亮的方式,但这将有效
答案 4 :(得分:1)
var result = new int[7];
result[dice1]++;
result[dice2]++;
result[dice3]++;
result[dice4]++;
result[dice5]++;
results.Any(x=>x==5);
答案 5 :(得分:1)
将它们扔进HashSet
,然后检查尺寸是否相同
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.
答案 6 :(得分:0)
你可以使用这样的方法:
public static bool AllEqual(params int[] values)
{
foreach (var value in values)
if (values[0] != value)
return false;
return true;
}
并使用它:
bool allSame = AllEqual(dice1, dice2, dice3, dice4, dice5);
但是,正如p.s.w.g所示,在一个可枚举的元素中生成所有骰子可能更好。
答案 7 :(得分:0)
首先,我建议让你的骰子变成可枚举的东西。 P.S.W.G.发布了一个非常优雅的方式来做到这一点,我有点嫉妒,我不会想到它。这是我的想法:
var dice = new List<int>();
for (int i = 0; i < 5; i++)
{
dice.Add(rand.Next(1, 7));
}
然后,您可以使用简单的评估来确定集合中的所有数字是否相同。我喜欢这个:
// if all the dice rolled the same, do something
if (dice.Distinct().Count() == 1)
{
}