Random Funktion

MechanU

Mitglied
hallo,
Habe ein kleines Problem, welches ich leider nicht schaffe.
Ich erzeuge mit Random 20 Zahlen, wobei jede Zahl nur einmal vorkommen darf.
Ich schaffe es einfach nicht, dass jede Zahl einzigartig ist.
Es sollte z.B so aussehen ( 1,2,3,4,5,6,11,12,15,14,9,16,19,20,7,8,10,13,17,18)

Wäre super wenn mit jemand einen Codauszug posten könnte!

danke
mechanu
 
Ist doch ganz simpel...

Du erstellst ein Array mit 20 Plätzen... jeden Wert den du in das Array einfügst, prüfst du vorher ob er schon vorhanden ist... Wenn das Array voll ist, hast du deine 20 Werte ohne Dubletten.

Code:
int counter = 0;
int zahl;
int ergebnis = new int[20];
...
 
 
while(counter != 20)
{
   zahl = erzeugezahl();
   if(checkezahlvorhanden(zahl) == false)
	  ergebnis[counter++] = zahl;
}
 
 
bool checkezahlvorhanden(int zahlcheck)
{
   for(int i = 0; i<20 ; i++)
	   if(ergebnis[i] == zahlcheck)
			//schon vorhanden
		   return true;
   return false;
}


Ungetestet, aber so sollte das gehen...

Gruss

MFC OpenGL
 
cosmochaosmaker hat gesagt.:
Ich würde 'ne Arraylist hernehmen. ;)
Mit der Funktion ArrayList.Contains kannst das mit nur deiner Zeile überprüfen.

Das schon, nur schneller ist das auchnicht, da genau das selbe wie oben dahintersteht
Aber um das direkt fortzuführen, es geht auch mit einem vector, und einem filostack ;)

So, genug kluggeschissen, es geht natürlich genauso gut, oder noch besser mit der Arraylist wie cosmo sagte *g*

Gruß

MFC OpenGL
 
<Klugsscheisser Mode ON> ;-)
Die Methoden & Funktionen die die Frameworkobjekte implementieren, sind IMO immer schneller.
Diese Funktionen zu nutzen erspaart einem auch einiges an Implementations-/Testarbeit.
<Klugsscheisser Mode OFF> ;-)

:D

MfG, cosmo
 
Zuletzt bearbeitet:
Oh backe, 2 Minuten nicht hier, und schon ist hier was im Gange ;)

Aber solange die Frage beantwortet ist, und ich denke mal das ist der Fall, sollte das hier nicht soo schlimm sein *g*


btw : Glaube kaum das die ArrayList schneller ist, weil die dynamisch ist, und mit vielen Klassen gekoppelt ist. Alleine das überprüfen der Länge, das Nutzen der dynamischen Methoden wird schon länger brauchen, als das mit dem normalen Array zu realisieren.
(Ist aber nur ne Vermutung, getestet hab ichs nicht, werd ich auch nicht, denn mir ist das eigendlich vollkommen egal, arbeite sonst auch immer mit der ArrayList *g* Nur da ich weiß das hier einige Leute reinkommen, die einfach weniger Erfahrung haben wollte ich die C++ Variante zeigen, um den ärmsten nicht komplett zu verwirren :p)

Gruss

MFC OpenGL @ WÖÖÖÖÖÖÖRK
 
Zuletzt bearbeitet:
Eure Offtopic-Klugscheissereien lassts mal sein, ok?
Vorallem Alexander12 und zioProduct, tragt was konstruktives zum Problem bei, oder seid still.
 
Das wird jetzt aber wieder OT.
Wenn Du ein Problem damit hast, daß ich keiner von der Sorte bin der die Welt ständig neu erfinden will,
dann machs via PN.
 
Nur um cosmo zu beruhigen ;)

Hier der .NET Code
Code:
using System.Collections;

ArrayList al = new ArrayList();
int maxnumber = 20;
 
int buffer;
 
Random rd = new Random();
 
while(maxnumber != al.Count)
 
{
 
buffer = rd.Next(0, 20);
 
if(false == al.Contains(buffer)) //wert noch nicht in dem Array
 
al.Add(buffer);
 
}

Viel Spass damit *g*

Gruss

MFC OpenGL
 

Neue Beiträge

Zurück