Autor Beitrag
MetaPhy
Hält's aus hier
Beiträge: 10

Win XP

BeitragVerfasst: Sa 03.03.07 21:20 
Hallo zusammen,

ok, dann ein neuer Versuch:

Hallo zusammen,

gleich vorweg; ich habe keine Erfahrung und keine Ahnung von praktisch Allem, bin ein totaler Frischling (abgesehen von Delphi-Übungen in der Schule, aber die liegt nun ein Paar Jahre zurück, und abgesehen von Taschenrechnerprogrammen) im Programmieren. Habe heute mit C# im zugehörigen Visual 2005 Express begonnen. Ich wollte ein Programm programmieren, was mir 4faches Würfeln simuliert und mir dann ausgibt, wie oft es vorgekommen ist, dass nach 4mal Würfeln 4mal die gleiche Zahl gewürfelt wurde (ich weiß, p=1/216, aber darum gehts mir nicht).

Wie bzw. wo deklariere ich eine Variable, die mitzählt, wie oft genau viermal die gleiche Zahl gewürfelt wurde? Meine Deklarationen funktionieren allesamt nicht. Die variable zaehler ist gemeint, aber so hauts nicht hin.



Hier mein Code:


ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
        private void button1_Click(object sender, EventArgs e)
        {

            int zaehler = 0;      
      
            for (int i=1; i<100; i++)
            {
            Random rnd = new Random();
                       
            int a = rnd.Next(1,6);
            int b = rnd.Next(1,6);
            int c = rnd.Next(1,6);
            int d = rnd.Next(1,6);

            if (a == b)
            {
                zaehler = zaehler + 1;
                label1.Text = Convert.ToString(zaehler);
            }
            }
            }


Gruß und Besten Dank im Voraus
Meta

Moderiert von user profile iconChristian S.: BBCode aktiviert
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 03.03.07 21:40 
Hallo!

Nimm das Random rnd = new Random(); mal aus der Schleife raus und schreib es davor.

Grund:
Der Zufallsgenerator arbeitet mit einem sogenannten "Seed"-Wert, von dem aus er die Folge von Zufallszahlen ausspuckt. Wenn Du immer denselben Seed-Wert verwendest, wirst Du immer dieselbe Folge von Werten erhalten.

Wenn Du keinen Seed-Wert angibst, wird ein zeitbasierter Wert verwendet. Die Schleife dürfte so schnell durchlaufen, dass dieser zeitbasierte Wert sich während dessen nicht ändert -> Du erhälst bei jedem Durchlauf die selben Zahlen, wenn Du den Zufallsgenerator in der Schleife erzeugst.

Wenn Du ihn nur einmal außerhalb der Schleife erzeugst, wird ja nur ein Seed-Wert verwendet und Du bekommst die darauf basierende Folge von Zufallszahlen. Nun bekommst Du in jedem Schleifendurchlauf verschiedene Zahlen.

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
MetaPhy Threadstarter
Hält's aus hier
Beiträge: 10

Win XP

BeitragVerfasst: Sa 03.03.07 21:51 
Hi Christian,

ich danke dir, das hatte ich zwar gar nicht gefragt, ist aber in der Tat auch wichtig für mich. Das Variablenproblem hat sich anscheinend von selbst gelöst; es klappt, kA, wieso es vorher nicht ging, da bekam ich ständig die Compilerantwort, dass die Variable lokal nicht bekannt wäre. Ok.

Wo dies nun geklärt ist, werde ich eine neue Frage stellen. Aber natürlich in einem neuen Thread :)

Gruß und danke
Hüseyin
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 03.03.07 21:53 
user profile iconMetaPhy hat folgendes geschrieben:
ich danke dir, das hatte ich zwar gar nicht gefragt, ist aber in der Tat auch wichtig für mich.
Naja, ich hab Deinen Code bei mir probiert und bekam keinen Fehler, außer dass die Anzeige nicht stimmen konnte. Daher bin ich davon ausgegangen, dass Du dachtest, die zaehler-Variable wäre irgendwie falsch deklariert und deswegen wäre die Anzeige falsch. :nixweiss:

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".