C# zufällige Zahl
Hallo, ich möchte in C# eine Zahl von 1-6 zufällig generieren lassen durch einen Buttonklick. Was muss ich in den void von dem Button reinschreiben?
3 Antworten
Math.Random(1,6);
Genauer:
Math.Random(kleinste Zahl, größte Zahl);
Den rest such dir selbst zusammen, Google weiß bescheid.
Mit void meinst du wohl die Methode , die bei button klick aufgerufen wird ? Void ist übrigens nur der rückgabewert der Methode und heißt so viel wie leer , OK ist eigentlich auch egal . zufallszahl en sind nicht wirklich zufällig , die meisten Menschen , die auch an Zauberei glauben, sind aber der festen Überzeugung : mein PC kann eine Zufallszahl ausdenken . das ganze wird aber nur aus der Systemzeit errechnet . dafür : Math.Random(1,6);
Aber so komplex dass du da nie ein Muster erkennen wirst. Also sind die Zahlen praktisch zufällig ^^
Man muss bedenken : ein PC ist eine logisch denkende Maschine . und nur weil der Nutzer kein Muster erkennt heißt das nicht , das die Zahl zufällig ist . und 3/4 der zufälle bei Computern sind nicht mal pseudozufällig a la " unser Zufalls generator hat sie als Gewinner ausgewählt"
Das kannst du dir auch gerne mal selber nachprogrammieren... ein einfacher Zufallszahlenalgorithmus wäre nach der Formel
x_n = a * x_(n-1) + b % c
erstellbar. x_0 wäre die erste Zufallszahl (seed), die sich aus der Systemzeit ergeben kann. Für a,b und c wählst du dir hohe Konstanten. Du wirst dabei sehen, dass sich eine lange Reihe von gleichverteilten Zahlen ergibt, die ewig braucht, bis sie sich wiederholt. Für sicherheitskritische Anwendungen wie Gewinnspiele ist das natürlich nicht ausreichend, für einen Anfänger, der mal einen Würfel programmieren will, allerdings schon ;)
Übrigens werden nicht alle Zufallszahlen aus der Systemzeit gebildet, dev/random bzw. dev/urandom unter UNIX sammelt Umgebungsrauschen von Gerätetreibern und für echte Zufallszahlen gibt's Geräte oder man zapft die API von random.org an.
Was ich mit diesen "Gewinnspielen" sagen wollte : da gewinnt eh jeder , bzw hauptsächlich die Firma, die dir deine daten abnimmt und verkauft
Hmmm... also eine möglich Lösung wäre: ...
Random r = new Random();
int random = r.Next(0, 7); // Minimum, Maximum + 1
MessageBox.Show(random.ToString());
...
Ja du hast Recht, die 'Zufallszahlen' werden berechnet (->Pseudozufallszahlen) ABER die sin trotzdem zufälliger als die Zahlen die du als 'Zufallszahlen' nennen kannst. Zudem besitzen neue Intel CPUs ja dieses SecureKey womit sie absolut zufällige Zahlen gemerieren sollen.