Как вернуть среднее количество бросков из кости? - PullRequest
0 голосов
/ 07 декабря 2011

Мне нужно отобразить среднее число бросков, необходимое для получения шестерки, и количество шестерок, на которое рассчитывалось среднее значение.Я думаю, что проблема с этой частью кода?Итак, я хочу получить среднее число бросков, которое, как мне кажется, является переменной AVGroll.Число шестерен, на которых было основано среднее значение, должно быть переменной loopcount.

        AVGroll = AVGroll + loopcount;
        average = AVGroll / loopcount;

Пытался прокомментировать мой код как можно лучше, чтобы сделать его читабельным.

        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Text;
        using System.Collections;

        namespace CE0721a
        {
            class Tut4_7
            {
                public void run()
                {
        // Random number generator 
        Random rndm = new Random();

        //declaring number for Random Number Generator
        int number;

       // average number of runs
        int average;

        //declaring loopcount starts at 1
        int loopcount = 1;

        //Average roll starts at 0
        int AVGroll = 0;

        //Variable if it continues
        int progcontinue;

        //Start lable
        Start:
        do
        {
            number = rndm.Next(6) + 1;
            Console.WriteLine(number);
            Console.ReadKey();

           if (number < 6)
            {
                loopcount++;
            }

        } while (number != 6);



        AVGroll = AVGroll + loopcount;
        average = AVGroll / loopcount;

        Console.WriteLine("The roll count is:");
        Console.WriteLine(loopcount);
        Console.WriteLine("average");
        Console.WriteLine(AVGroll);
        Console.WriteLine("press 1 to continue or 0 to exit");




        progcontinue = (int.Parse(Console.ReadLine()));

        if (progcontinue > 0)
        {

            loopcount = 1;
            goto Start;

        }
        else
        {


        }
    }
}
        }

Ответы [ 2 ]

1 голос
/ 07 декабря 2011

Вы делите не на ту вещь:

    AVGroll = AVGroll + loopcount;
    average = AVGroll / loopcount;

Вы хотите усреднить по количеству испытаний. Одно испытание - вы катаетесь, пока не получите 6. Затем на основе progcontinue вы проводите больше испытаний.

Таким образом, есть дополнительная переменная, которая считает испытания и делит на это:

    int trial =  1;

    //...

    AVGroll = AVGroll + loopcount;
    average = AVGroll / trials;

    //...

    if (progcontinue > 0)
    {

        loopcount = 1;
        ++trials;
        goto Start;

    }

Также вам нужно напечатать average, а не AVGroll:

    Console.WriteLine("average");
    Console.WriteLine(AVGroll); //should be average
1 голос
/ 07 декабря 2011

Я немного озадачен вашим кодом, но я думаю, что вы используете неправильные переменные для вычисления AvgRoll.при первом запуске AVGroll всегда будет 1 пример:

 AVGroll = AVGroll (0) + loopcount (5);
    average = AVGroll (5) / loopcount (5);

, поэтому это будет 1

Я думаю, вам нужно сделать что-то вроде этого:

     int timesContinued = 1;
        //Start lable
                Start:
                do
                {
                    number = rndm.Ne

xt(6) + 1;
                Console.WriteLine(number);
                Console.ReadKey();

               if (number < 6)
                {
                    loopcount++;
                }

            } while (number != 6);



            AVGroll = AVGroll + loopcount;
            average = AVGroll / timesContinued;

            Console.WriteLine("The roll count is:");
            Console.WriteLine(loopcount);
            Console.WriteLine("average");
            Console.WriteLine(AVGroll);
            Console.WriteLine("press 1 to continue or 0 to exit");




            progcontinue = (int.Parse(Console.ReadLine()));

            if (progcontinue > 0)
            {
                loopcount = 1;
                timesContinued++;
                goto Start;

            }

thisТаким образом, вы будете делить общее количество раз на количество нажатий, чтобы продолжить, и я надеюсь, что это то, что вы хотели.

...