Laden...

Wörter abspeichern & danach zufällig ausgeben

Erstellt von userid20907 vor 12 Jahren Letzter Beitrag vor 12 Jahren 5.360 Views
Thema geschlossen
userid20907 Themenstarter:in
3 Beiträge seit 2011
vor 12 Jahren
Wörter abspeichern & danach zufällig ausgeben

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

G
538 Beiträge seit 2008
vor 12 Jahren

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)

userid20907 Themenstarter:in
3 Beiträge seit 2011
vor 12 Jahren

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.

78 Beiträge seit 2009
vor 12 Jahren

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:

6.911 Beiträge seit 2009
vor 12 Jahren

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!"

78 Beiträge seit 2009
vor 12 Jahren

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:

49.485 Beiträge seit 2005
vor 12 Jahren

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

Thema geschlossen