0

6を得るのに必要なロールの平均数と、その平均に基づいた6の数を表示する必要があります。私が抱えている問題は、コードのこの部分にあると思いますか?したがって、変数AVGrollとして持っていると思う平均ロール数が必要です。平均が基づいていた6の数は、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
        {


        }
    }
}
        }
4

2 に答える 2

1

私はあなたのコードに少し混乱していますが、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;

            }

このようにして、ロールされた合計回数を、続行を押した回数で割ることになります。これがあなたの望みであると思います。

于 2011-12-07T08:44:44.830 に答える
1

あなたは間違ったもので割ります:

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

試行回数の平均を求めます。1回の試行は、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
于 2011-12-07T08:47:13.163 に答える