我已经管理了一个随机数生成器来模拟掷骰子300次。现在,我想比较结果,看看它到底有多随机。
class RngPract
{
public void RunProgram()
{
int i;
Random rollingDie = new Random ();
Console.WriteLine("Numbers 1 to 6");
for (i =0; i < 200; i++)
{
Console.WriteLine("Next is: {0}", rollingDie.Next(1,7));
int a = 0;
switch (rollingDie.Next())
{
case 1:
a++;
Console.WriteLine("1 appears:{0}",a);
break;
}
}
}
}
我无法让switch语句执行任何操作。
答案 0 :(得分:3)
您可以将随机生成的值存储在列表中,然后查询出现的情况。
可以通过按值分组并找到每个组中的项目数来查询每个数字的出现。
例如,
public void RunProgram()
{
int i;
Random rollingDie = new Random ();
Console.WriteLine("Numbers 1 to 6");
var list = new List<int>();
for (i =0; i < 200; i++)
{
var newItem = rollingDie.Next(1,7);
list.Add(newItem);
Console.WriteLine("Next is: {0}", newItem);
}
foreach(var item in list.GroupBy(x=>x))
{
Console.WriteLine($"{item.Key} {item.Count()}");
}
}
如果您需要提供事件的实时更新(每次随机生成一个数字),则可以执行以下操作。
public void RunProgram()
{
int i;
Random rollingDie = new Random ();
Console.WriteLine("Numbers 1 to 6");
var list = new List<int>();
for (i =0; i < 200; i++)
{
var newItem = rollingDie.Next(1,7);
list.Add(newItem);
Console.WriteLine("Next is: {0}", newItem);
var occurance = FindOccurance(list,newItem);
Console.WriteLine($"{newItem} has occured {occurance} times");
}
}
public int FindOccurance(List<int> list,int currentItem)
{
return list.Count(x=>x == currentItem);
}