如何在c#

时间:2017-09-08 11:54:01

标签: c# arrays string random

本周我在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。

3 个答案:

答案 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);
}

<强>输出:

enter image description here

答案 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()));