Kezdőoldal » Számítástechnika » Programozás » Hogyan tudok n = 1000000-ra...

Hogyan tudok n = 1000000-ra random, egymastol kulonbozo szamokat generalni? (C++)

Figyelt kérdés

2018. okt. 12. 21:24
 1/5 anonim ***** válasza:

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)

2018. okt. 12. 21:40
Hasznos számodra ez a válasz?
 2/5 tabaki ***** válasza:
100%
Tölts fel egy tömböt -- a feladattól függően szabályos vagy random lépésközzel -- egymást követő számokkal, és utólag keverd össze az elemeket.
2018. okt. 12. 21:50
Hasznos számodra ez a válasz?
 3/5 anonim ***** válasza:
100%
tabaki kollega hozzászólását kiegészítve - a keveréshez: [link]
2018. okt. 12. 21:53
Hasznos számodra ez a válasz?
 4/5 anonim ***** válasza:

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.

2018. okt. 12. 22:41
Hasznos számodra ez a válasz?
 5/5 anonim ***** válasza:

#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).

2018. okt. 12. 23:11
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!