C# :: Aufgabe #201 :: Lösung #2

4 Lösungen Lösungen öffentlich
#201

kleine simulation zweier zufallsereignisse

Anfänger - C# von hollst - 21.03.2018 um 21:25 Uhr
Gegeben seien zwei unabhängige Zufallsereignisse A und B, wobei A mit einer
Wahrscheinlichkeit von 70 % eintritt und B mit eine Wahrescheinlichkeit von 10 %.

Durch (MontoCarlo-) Simulation schätze man ab, mit welchen Wahrscheinlichkeiten das Doppelereignis (A, B)
vorkommt für die Fälle

a) weder A noch B sind eingetreten,
b) entweder A oder B (oder beide) ist (sind) eingetreten.

Man kann das natürlich auch ausrechnen, aber grau ist bekanntlich alle Theorie.
#2
vote_ok
von enn (50 Punkte) - 10.04.2018 um 11:06 Uhr
Quellcode ausblenden C#-Code
class MonteCarloSimulation
    {

        private int AnzahlEreignisA = 0;
        private int AnzahlEreignisB = 0;
        private int AnzahlEreignisNichtAOderB = 0;

        private int GesamtDurchlaeufe = 0;

        private Random random;

        public  MonteCarloSimulation()
        {
            random = new Random(DateTime.Now.Millisecond);
        }

        public void start(int AnzahlDurchlaeufe)
        {
            this.GesamtDurchlaeufe = AnzahlDurchlaeufe;
            for (int i=0;i<=AnzahlDurchlaeufe;i++)
            {
                int result = random.Next(100);
                WerteResultAus(result);
            }
        }

        public String getAusgabeString()
        {
            string AusgabeString = "Ergebnis der monte-Carlo Simulation\n";
            AusgabeString += "Ergeinis A : " + getProzentNachSimulation(AnzahlEreignisA).ToString()+"%\n";
            AusgabeString += "Ergeinis B : " + getProzentNachSimulation(AnzahlEreignisB).ToString() + "%\n";
            AusgabeString += "Ergeinis weder A noch B : " + getProzentNachSimulation(AnzahlEreignisNichtAOderB).ToString() + "%\n";

            return AusgabeString;

        }

        private void WerteResultAus(int result)
        {
            if (result < 70)
            {
                AnzahlEreignisA++;
                return;
            }

            if(result<80)
            {
                AnzahlEreignisB++;
                return;
            }

            AnzahlEreignisNichtAOderB++;

        }

        private float getProzentNachSimulation(int Wert)
        {
            return 100 * Wert / GesamtDurchlaeufe;
        }

    }


Quellcode ausblenden C#-Code
class Program
    {
        static void Main(string[] args)
        {
            MonteCarloSimulation dieSimulation=new MonteCarloSimulation();
            dieSimulation.start(1000000);
            Console.WriteLine(dieSimulation.getAusgabeString());
            Console.ReadLine();

        }
    }

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben