Entwickler-Ecke

C# - Die Sprache - Variable lokal nicht akzeptiert?


MetaPhy - Sa 03.03.07 21:20
Titel: Variable lokal nicht akzeptiert?
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:



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. - 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


MetaPhy - 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. - 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: