Keine doppelte Zufallszahl
Übersicht

![]() |
BobBetreff: Keine doppelte Zufallszahl |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo Leute,
ich such eine Möglichkeit bei der initialiseirung einesProgramms eine Zufallszahl zwischen 0 und n zu generieren und zu speichern. (n kann bis ca. 1.000.000 sein) Als Ergebniss darf keine Zahl doppelt vorkommen. Wie die Zahl gespeichert wird ist egal (type, bank, array) Wichtig ist das ich dann mit einer simplen for next Sschleife über alle Elemente gehen kann. Ich meine hier schon mal soetwas gesehen zu haben. Kann es aber nicht mehr finden. Alternativ kann auch eine Unsort function genutzt werden. Allerdings sind die hier bisher gesehenen functionen selbst für eien "Initialisierung" viel zu langsam ![]() Bin dankbar für jeden Tip |
||
![]() |
Travis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich verstehe die Fragestellung nicht ganz. Du willst am Anfang eine Zufallszahl von (0 bis z.B. 1.000.000) erstellen? Und die soll nicht doppelt vorkommen. Es ist nur eine, mit was könnte sich die Zahl denn gleichen?
Oder meinst du, das du mehrere Zufallszahlen (bis zu 1.000.000) erstellen möchtest und nicht willst, dass du mehrere Gleiche Zahlen hast. Oder möchtest du bei jedem Programmstart eine Zahl erzeugen und dann z.B. in einer externen Datei abspeichern. Und bei jedem Programmstart sol eine Zahl erzeugt werden, die es vorher noch nie gab? |
||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
- Zuletzt bearbeitet von Travis am Sa, Jul 17, 2004 20:28, insgesamt einmal bearbeitet
![]() |
Gina |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich denke schon, dass er mehrere Zufallszahlen ziehen will. Die Frage ist, wie viele. Ich denke mal wenns ein paar hundert oder so sind, läßt sich das mit einem Type-Feld machen, aber wenns zu viele sind... Puhh, dauert das ständige suchen bestimmt sehr lange...
Darf man fragen, wozu genau du das brauchst? Vielleicht fällt einem dann noch ne andere Möglichkeit ein... Gina. |
||
![]() |
Bob |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo.
Hab mich vielleicht unklar ausgedrückt. Ich möchte am Anfang Zahlen von 0 bis 1.000.000 haben. Keine darf dopelt sein. (Falls mit Rand generiert). Es geht auch: For i = 0 to 1000000 Zhal(i) = i next Dann müsste das Zahl Array aber durcheinander gewürfelt werden so das wenn ich später mit: For i = 0 to 1000000 Print Zhal(i) next Folgendes bekomme 752 745862 2 456325 856324 usw usw. Ich hoffe es wird nun deutlicher. |
||
![]() |
Blatolo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] zeit=MilliSecs()
SeedRnd MilliSecs() anzahl=1000000 Dim array(anzahl) For i=0 To anzahl array(i)=i Next For i=0 To anzahl zufall=Rand(0,anzahl) temp=array(zufall) array(zufall)=array(i) array(i)=temp Next zeit=MilliSecs()-zeit Print zeit+" ms" WaitKey Das wäre z.B. eine Möglichkeit. dauert bei mir insgesamt 365 ms. Erst wird das array erstellt und danach werden die werte hineingeschrieben. Daraufhin werden die einfach willkürlich vertauscht was einem unsort gleichkommt. |
||
![]() |
Bob |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo Blatolo
bei mir 512 ms Ganz ausgezeichnet. War genau das was ich gesucht habe. Bin (mal wieder ) selbst nicht drauf gekommen. Besten Dank. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group