本周我在c#开始了我作为实习开发人员的职业生涯。 做了一个练习,我应该为骰子程序编写一个c#-console代码。 该计划的规格如下:
要求用户输入掷骰子的频率 对于每只眼睛/骰子的数量,结果必须以%显示 喜欢:骰子滚动1倍约3%的x-Times。 骰子用2倍的x-Times滚动了2% 等等..直到6。 因为我是c#中的新手,这就是我走了多远:
var dict = new Dictionary<int, int>();
foreach (var value in array)
{
if (dict.ContainsKey(value))
dict[value]++;
else
dict[value] = 1;
}
foreach (var pair in dict)
Console.WriteLine("Die Zahl {0} ist {1} mal vorhanden.", pair.Key, pair.Value);
Console.ReadKey();
和
Random diceRandom = new Random();
int rollDice = diceRandom.Next(1, 7);
Console.WriteLine(diceRandom);
//Console.WriteLine("Es wurde eine:" + rollDice + "gewürfelt" );
for (int i = 1; i <= 10; i++)
{
List<int> liste = new List<int>();
var ausgabe = liste.Select(zahlen => rollDice % 2 == 0).ToList();
rollDice = diceRandom.Next(1, 7);
Console.WriteLine("Es wurde eine " + rollDice + " gewürfelt.");
Thread.Sleep(50);
我的问题,我还没弄明白如何询问用户的输入 掷骰子的频率有多高? 输出%的第二件事不应该是一个巨大的戏剧,因为我得到它以某种方式,第一个代码是该规范的解决方案的开始。 这是我的第一次练习。
谢谢,L.J。
答案 0 :(得分:3)
为了简单起见,我采取了重建代码的技巧。
我已使用Console.ReadLine
从用户那里获得了滚动次数。
Console.WriteLine("How many times should the dice be rolled ?");
int numberOfRolledTimes = int.Parse(Console.ReadLine());
var diceRandom = new Random();
var numberAndTimesArray = new int[6];
for (int i = 0; i < numberOfRolledTimes; i++)
{
var rolledResult = diceRandom.Next(1, 7);
numberAndTimesArray[rolledResult - 1]++;
}
for (int i = 0; i < 6; i++)
{
double precentage = 100.0*numberAndTimesArray[i] / numberOfRolledTimes*1.0;
Console.WriteLine("Dice result of {0} rolled {1} times. ({2}%)", i + 1, numberAndTimesArray[i], precentage);
}
<强>输出:强>
答案 1 :(得分:1)
您可以使用for循环或简单地使用List<int>
创建Enumerable<int>
或int []或Enumerable.Range
。鉴于数组只保留随机顺序,你可以简单地使用.OrderBy
和随机数进行排序:
Random rnd = new Random();
int start = 1, end = 6;
int[] results = Enumerable.Range(start, end).OrderBy(x=> rnd.Next()).ToArray();
答案 2 :(得分:0)
var numRollDices = int.Parse(Console.ReadLine());;
var randomGenerator = new Random();
var result = Enumerable
.Range(0, numRollDices)
.Select(i => randomGenerator.Next(1, 7))
.GroupBy(n => n)
.Select(n => new
{
Num = n.First(),
Count = n.Count(),
Percentile = ((n.Count() * 100) / numRollDices)
});
Console.WriteLine(string.Join($"{Environment.NewLine}", result.ToList()));