Hallo Community,
habe jetzt schon eine Weile gesucht und leider noch keinen Denkanstoß für mein "Problem" gefunden.
Ich arbeite gerade in einer Windows-Forms-Anwendung und würde gerne verschiedene Wörter zufällig ausgeben lassen.
Weiß jemand, wie ich (zuvor festgelegte) Wörter zufällig (also jedes Mal ein anderes) ausgeben kann?
Danke schonmal im Voraus!
Kaktus
Lies alle Wörter in ein Array ein und nutze einen Zugriff per Random()
Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann - umgekehrt ist das schon schwieriger (K. Tucholsky)
Das Problem mit Internet-Zitaten ist, dass sie oftmals zu unrecht als authentisch angenommen werden. (K. Adenauer)
Danke Grumbler85,
auf die Idee hätte ich eigentlich auch selber kommen können 😉
Jetzt habe ich nur noch eine Frage bezüglich des Arrays, beim
Konsolenprogramm war das ja ganz einfach mit dem Array erstellen,
nur bei der Windows-Forms-Anwendung bekomm ich das irgendwie
nicht hin.
Könntest du mir vielleicht ein klitzekleines Beispiel geben?
EDIT:
Hab die Lösung glaub grad gefunden, bzw. meinen Denkfehler^^
Form[] myFormArray = new Form[10];
geht das so?
was kann ich denn jetzt in so ein array reinschreiben? bei zahlen und
wörtern zeigt er ja immer
"Eine implizite Konvertierung vom Typ "int" in System.Windows.Forms.Form ist
nicht möglich" an.
Hallo, wie wäre es mit:
Mit deiner Array deklaration würdest du 10 Forms erstellen.
string[] myString = new string[10];
Random() gibt die ja nen Zahlenwert zurücke (z.b. zwischen 1 und 10), nennen wir ihn i (wie int)
Ouput:
//gibt den string (das Wort) zurück was im Array and der Stelle i-1 steht, i-1, weil Array bei 0 anfängt (in deinem Bsp. 0-9 = 10 Werte)
Messagebox.Show(myString[i-1]);
:evil:
Hallo Kaktus,
anstatt Random ist ev. ein Shuffle (siehe [Snippet] Zufallszahlen, die sich nicht wiederholen) besser zu gebrauchen.
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
Zweite Möglichkeit ist, du generierst das Array direkt mit den Werten:
z.b.:
string[] myString = {"Klaus","Kunibert","Mike","Jack","Jonas","Maria","Fiona","Herbert","Tim","Struppi"};
und dann machst du das gleiche wie oben:
//Erstelle neue Random Zahl
Random rd = new Random();
//Gebe mir ne Random Zahl die min. 0 ist und maximal 9 (10 wird nie erreicht)
int i = rd.Next(0, 10);
// Gebe den "Namen" aus der an der Stelle i steht (also von 0 bis 9)
MessageBox.Show(myString[i]);
:evil:
Hallo Aastean,
kommt darauf an, ob sich die Wörter wiederholen sollen dürfen. Mit dem von gfoidl genannten Snippet tun sie es nicht, wenn man deinen Code in eine Schleife packt, tun sie es (potenziell).
Eine beliebige Zufallsauswahl ist ja ganz einfach. Wenn sich die Zahlen nicht wiederholen sollen, gibt es viele Ansätze, von denen aber nicht alle sinnvoll sind. Das wurde bereits ausführlich in Zufallszahlen, die sich nicht wiederholen diskutiert. Gerade wenn man alle oder fast alle Elemente aus einer Liste ohne Wiederholung aufzählen will, kommt eigentlich nur das genannte Snippet in Frage. Das alles müssen wir hier nicht nochmal aufrollen.
Hallo Kaktus,
schön zu an dem Edit zu sehen, dass du dich selbst um eine Lösung bemühst. Bitte beachte trotzdem, dass der Umgang mit Arrays unter [Hinweis] Wie poste ich richtig? Punkt 1.1.1 fällt.
herbivore