|
You last visited: Today at 05:40
Advertisement
rand()%100 ohne doppelte Zahlen
Discussion on rand()%100 ohne doppelte Zahlen within the C/C++ forum part of the Coders Den category.
11/08/2013, 18:04
|
#1
|
elite*gold: 0
Join Date: Jul 2011
Posts: 331
Received Thanks: 65
|
rand()%100 ohne doppelte Zahlen
Hi,
ich brauche Zufallszahlen, die nicht doppelt vorkommen!
Lässt sich sowas unkompliziert machen, z.B. im srand()?
Bis jetzt habe ich es so versucht zu lösen, leider ohne Erfolg
Code:
int zahlen[6];
bool doppelt;
int zs, i1;
Code:
srand(i1); //i1 ist Zähler aus for-schleife
for(int i=0; i<=5; i++)
{
while(doppelt==true)
{
doppelt=false;
zs=(rand()%99)+1;
for(int i2=0; i2<=i; i2++)
{
if(zahlen[i2]==zs)
{
doppelt=true;
}
else
{
zahlen[i]=zs;
}
}
}
}
Der Code-Auschnitt befindet sich in einer For-Schleife!
lolxdfly
|
|
|
11/08/2013, 18:47
|
#2
|
elite*gold: 99
Join Date: Apr 2011
Posts: 730
Received Thanks: 236
|
Pack zahlen die schonmal vorgekommen sind in einen std::vector und prüf einfach nach jedem random ergebniss ob es sowas bereits im vector gibt
|
|
|
11/08/2013, 20:54
|
#3
|
elite*gold: 0
Join Date: Aug 2012
Posts: 236
Received Thanks: 94
|
Du könntest std::random_shuffle verwenden (in algorithm). Damit könntest du eine Liste der ersten hundert (oder sechs) Zahlen mischen und dann der Reihe nach durchgehen. Wenn du mehr als nur ein paar Elemente benötigst, ist das effizienter, als die bereits verwendeten Zahlen zu speichern.
|
|
|
11/09/2013, 10:25
|
#4
|
elite*gold: 297
Join Date: Dec 2010
Posts: 1,129
Received Thanks: 1,687
|
std::set kann dabei helfen. Und ich erinnere an einen Talk von STL: "rand() considered harmful".
|
|
|
11/09/2013, 15:50
|
#5
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
|
Quote:
Originally Posted by Hiris
Pack zahlen die schonmal vorgekommen sind in einen std::vector und prüf einfach nach jedem random ergebniss ob es sowas bereits im vector gibt
|
Ich würde mal behaupten, dass das im Worst Case die Laufzeit stark erhöht.
Ich würde eher einen Vector mit den Zahlen 1-100 füllen und den Random Wert als Index dafür verwenden. Nach Verwendung einer Zahl wird diese aus dem Vektor entfernt.
Logischerweise wäre es dann auch (rand() % (vec.size() - 1)) +1 damit man die Grenzen nicht überschreitet.
|
|
|
11/09/2013, 16:11
|
#6
|
elite*gold: 0
Join Date: Aug 2012
Posts: 236
Received Thanks: 94
|
Quote:
Originally Posted by MrSm!th
Nach Verwendung einer Zahl wird diese aus dem Vektor entfernt.
|
Mit dem letzten Wert des Vektors überschrieben und der Vektor um ein verkleinert.
|
|
|
11/09/2013, 18:10
|
#7
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
|
Quote:
Originally Posted by Tasiro
Mit dem letzten Wert des Vektors überschrieben und der Vektor um ein verkleinert.
|
Stimmt, das würde es noch optimieren. Vector ist aber ohnehin schon ziemlich fix.
|
|
|
11/09/2013, 18:18
|
#8
|
elite*gold: 0
Join Date: Aug 2012
Posts: 236
Received Thanks: 94
|
Nicht, wenn du nach und nach jedes einzelne Element aus der Mitte entfernst und dann alle anderen Elemente danach verschieben musst. Damit bist du wieder in O(n²).
|
|
|
11/09/2013, 18:52
|
#9
|
elite*gold: 0
Join Date: Feb 2013
Posts: 1,137
Received Thanks: 869
|
Hast vollkommen recht, Tasiro. Bei 100 Elementen von primitven Datentypen wird das aber nicht ins Gewicht fallen (die werden sowieso blitzschnell kopiert).
Falls der Inhalt auch noch in den Cache gepackt wird, geht der Unterschied wahrscheinlich sogar steil gegen 0.
|
|
|
 |
Similar Threads
|
Mehrere Fenster aber ohne Rand?
01/24/2013 - World of Warcraft - 3 Replies
Huhu,
ich wollt mal fragen ob jemand weiss wie man das machen kann wenn man mehrere BotFenster aneinander hat das der Rand davon weg ist?
Hoffe einer kann mir da weiter helfen Danke
Gruss ;)
|
namen ohne zahlen
11/05/2010 - WarRock - 4 Replies
hallo leute wollte nur bescheid sagen dass man zurzeit namen ohne zahlen machen kann^^
ging ja ne derbe lange zeit nicht
|
Nickname ohne Zahlen?
10/27/2010 - WarRock - 5 Replies
Ich wollt gerne wissen ob es möglich ist bei der Regestrierung
den Nick auch ohne Zahlen zu benutzten können.
|
[Bug] Handeln ohne zahlen
08/30/2010 - WoW PServer Exploits, Hacks & Tools - 9 Replies
Hallo Leute...
Es ist nicht direkt ne Frage aber ich muss zugeben i.wie schon^^
Und zwar habe ich auf mol*en (darf man hier server nennen?^^) mit einem Spieler gehandelt. Er wollte 2 Froststofftaschen und eine Robe. Er bestand aber unbedingt darauf (ausrede war er hätte kein Platz im Inventar) das ich ihm zuerst die Taschen gebe. Dort kams mir schon komisch vor weil es einmal wie unterbrochen wurde. Dann die Robe: Ich packte die Robe ins >NEUE< Handelsfenster und er sein Gold. Wir...
|
Button ohne rand + ein/aus
02/10/2010 - AutoIt - 10 Replies
hai leuts
ich bin mal wieder am cooden und möchte gerne einen button haben, welcher 1. den gepunkteten rand nicht hat (immer wenn man ein button anklickt gibts doch so einen gepunkteten rand ... den will ich weg ^^)
und 2. sollte er wenn man drauf klick "drinne bleiben" also gedrückt bleiben und wenn man nochmal drauf klick, sollte er wieder raus gehen ^^
ich hoffe ihr versteht was ich meine.
hab mir in der help datei die parameter angeschaut... aber i-wie nix gesehen ^^
wär suppi...
|
All times are GMT +1. The time now is 05:40.
|
|