Hogyan tudok n = 1000000-ra random, egymastol kulonbozo szamokat generalni? (C++)
egymástól különböző az szívás akkor tárold őket listában, tömbben, mátrixban vagy amiben akarod és minden generálásnál vizsgáld ezeket végig :) nagy írás olvasást vagy memória használatot fog produkálni sok generálás esetén(ha jól értem akkor 1000000 számot kell generálni?? vagy 0-1 től 1000000 ig??)
generaltertek = rand() % x + y
amiben az y a kezdőérték
az x az azt követő intervallum mérete
megj ez integer fog dobálni
pl:
int i;
i= rand() % 10 + 1000; // akkor ez 1000-től 1010-ig generál
vagy szórakozhatsz az srand parancssal (aminek kell vmi seed amiből generál:óra, proc kihasználtság meg egyéb finomságok)
rand() % valami-t nem igazán preferálom. Torzítani fog, mivel a maradékokból nem egyforma darabszám van, még ha az kis torzítás is.
"vagy szórakozhatsz az srand parancssal"
Ez meg ronthat is a random tulajdonságon, attól függ hogy hogy szórakozik vele, de nem ártana ésszel és hozzáértéssel csinálni. Még maga a sima rand() se egy életbiztosítás, attól függ mondjuk hogy mire kell, kriptográfiai célra gyenge lenne.
#include <vector.h>
#include <time.h>
...
std::set<int> randszamok;
...
srand(time(NULL));
int i;
while (randszamok.size <= 1000000)
randszamok.insert(rand());
for (int e : randszamok)
Cout << e << endl;
...
-------------
Ha működik, akkor az volt az ötletem, hogy egy dinamikus méretű tárolót kellene használni, mivel a C++-ban van ilyen. Azért választottam az std:set -et, mert ebben egy elem csak egyszer szerepelhet.
3zért fut a ciklus addig, míg a mérete (elemszáma) 1000000 nem lesz, amennyinek ennél a feladatnál lennie kell (nem pedig pontosan 1000000-szor adok hozzá elemét, mert ha egy olyan elem lenne a következő, ami már benne van, nem adná hozzá mégegyszer, csak menne tovább, és máris 1 elemmel kevesebb lenne benne a végére).
Az srand(Time(NULL)) -al az aktuális idő is belejátszik a számokba.
Az std:set -et még sose használtam, csak java-ban, onnan tudtam, hogy nem lehet benne ismétlődés, és itt ezt a kódot csak a leírása alapján írtam, javításáról ki, ahol rossz (ha nem mindenhol).
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!