2017-05-27 3 views
-1

Ich versuche, eine Zufallszahl zu generieren, wenn ich auf eine Schaltfläche klicke. Aber wenn ich es tue, werde ich manchmal die gleichen Nummern bekommen. Wenn ich auf den Button klicke, wird auch ein Label ausgeblendet. Wenn ich auf Knöpfe klicke, sollten keine Etiketten mehr übrig sein.verhindern Zufallszahl mehr als einmal zu erzeugen

Image
private static Random rnd = new Random(); 
randomNumber = rnd.Next(0, 25); 

Wie kann ich es verhindern, dass die gleiche Zahl mehr als einmal, bis das Programm geschlossen/neu gestartet?

+3

Zufallszahlen sind zufällig. Es ist durchaus möglich, dass, wenn Sie fünf Mal nach einer zufälligen Zahl fragen, einer wiederholt wird. Wenn Sie sie auf einmal beschränken, sind sie nicht mehr zufällig. Was genau versuchst du zu tun? –

+0

@ Ken-White Wenn ich auf eine Schaltfläche klicke, möchte ich zufällig ein Etikett auswählen. Ich habe gesehen, dass es möglich ist, eine Zufallszahl aus einem Array zu generieren, und dann verhindern, dass sie erneut ausgewählt wird, indem überprüft wird, ob sie zuvor verwendet wurde. Ich weiß einfach nicht, wie ich das alles machen soll. – TitanBuilder1

+2

Und was ich frage ist, warum Sie eine zufällige Zahl wollen, wenn Sie wollen, dass es nicht zufällig ist. Wenn Sie 10 Personen bitten, eine Nummer zwischen 1 und 10 auszuwählen, sind die Chancen ziemlich gut, dass mehr als einer die gleiche Nummer wählt; das ist zufällig. Wenn Sie möchten, dass es nicht zufällig ist, füllen Sie ein Array, wählen Sie eine Auswahl aus dem Array und markieren Sie sie als verwendet, und verwerfen Sie Nummern, die nicht verfügbar sind, aber nennen Sie sie keine Zufallszahlen. Sie sind eine Reihe von Zahlen, die auf den einmaligen Gebrauch beschränkt sind, aber in keiner Weise * zufällig *. –

Antwort

0

Per Definition, wenn Sie tun, was Sie wollen, würde die Zahl nicht mehr zufällig sein.

Also, was Sie wollen, um Duplikate zu erhalten, sollten Sie eine Liste der Zahlen in dem Intervall, das Sie gewählt haben, nehmen Sie sie mischen und dann nacheinander greifen.

Ein effizienter Weg, dies zu tun, ist der in here beschriebene. Dies verwendet die zu mischen, was in Ihrem Fall wird int s sein.

Verwandte Themen