Wie kann ich zufällig einen von zwei Zuständen erzeugen, mit der Wahrscheinlichkeit, dass "rot" in 10% der Fälle generiert wird und "grün" in 90% der Fälle generiert wird?
Alle 2 Sekunden blinkt entweder ein grünes oder ein rotes Licht.
Diese Sequenz wird für 5 Minuten fortgesetzt.
Die Gesamtzahl der Vorkommnisse eines blinkenden Lichts sollte 300 sein.
Entweder
%Vor%oder
%Vor% Dies funktioniert, weil Random.Next(int maxValue)
eine einheitlich verteilte Ganzzahl in [0, maxValue)
und Random.NextDouble
gibt eine einheitlich verteilte double
in [0, 1)
zurück.
Aufbauend auf Michaels Antwort, aber hinzufügen weiteren Kontext aus der Frage:
%Vor%Ich schätze, Sie haben den Timing-Teil (so adressiert dieser Code das nicht). Unter der Annahme einer "netten" Teilung werden 10% Rottöne und 90% Grüns erzeugt. Wenn die Genauigkeit nicht wichtig ist, hat Michaels Antwort bereits meine Stimme.
%Vor% random.Next(10)
wird nach dem Zufallsprinzip die Zahlen 0..9 zurückgeben und es besteht eine Chance von 10%, dass es 0 zurückgibt.
Wenn Sie möchten, dass diese nur zufällig aussehen, möchten Sie vielleicht Shuffle Bag implementieren
und
Notwendigkeit eines vorhersagbaren Zufallsgenerators
Auf diese Weise sollte die Blinkperiode natürlicher aussehen und Sie können einfach die beschränkte Anzahl von Blinksituationen implementieren.