Zufallszahl nicht immer neu!
-
Hi,
ich habe hier folgenden Code:
private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e) { Random^ hoch = gcnew Random(); Höhe = hoch->Next(750); Random^ breit = gcnew Random(); Breite = breit->Next(1020); Sekunden++; label1->Text = Sekunden.ToString(); pictureBox1->Location = System::Drawing::Point(Breite, Höhe); }
Bei den Vorgängen die Zahlen zufällig zu ziehen, sind es immer die zwei selben Zahlen. Es sollen aber zwei verschiedene sein.
EDIT: Hab mir die Zufallszahlen immer beim "Tick" in label1 angeguckt. Sind zwar verschiedene Zahlen, das Bild bewegt sich aber nur diagonal zufällig.
-
Hunterson schrieb:
private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e) { Random^ myRandom = gcnew Random(); Höhe = myRandom->Next(750); Breite = myRandom->Next(1020); Sekunden++; label1->Text = Sekunden.ToString(); pictureBox1->Location = System::Drawing::Point(Breite, Höhe); }
Instanziiere nur einmal die Random-Klasse, dann bekommst du auch unterschiedliche Zahlen.
-
Es funktioniert. Vielen Dank!!!
Verstehe zwar nicht warum
?
-
Random orientiert sich wahrscheinlich an der Uhrzeit. Bei jedem Aufruf von next(int) vergleicht Random die bereits "gezogenen Zufallszahlen" und ändert sie, falls sie in irgendeiner Weise ähnlich oder identisch sind.
So jedenfalls meine Theorie. Simpel ausgedrückt: um anständige Zufallszahlen zu liefern, benötigt der Algo von Random die Instanz, mit der alle anderen Zahlen gezogen werden.