C++ hol a hiba? Próbálom szép lassan felépíteni de kicsit elakadtam. Valamiért a ciklusban mindig ugyanazt a véletlen számot használja.
Figyelt kérdés
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string>
using namespace std;
class Etlap {
int z, j;
public:
void lista (int);
void listazas (int);
} et;
int veletlen (int x, int y)
{
int rd;
srand (time(NULL));
rd=rand() % x+y;
return rd;
}
void Etlap::lista (int z)
{
switch (z)
{
case 1:
cout << "Porkolt" << endl;
break;
case 2:
cout << "Leves" << endl;
break;
case 3:
cout << "Fozelek" << endl;
break;
case 4:
cout << "Sutemeny" << endl;
break;
case 5:
cout << "Salata" << endl;
break;
}
}
void Etlap::listazas (int j)
{
int random;
random=veletlen(3,2);
for(int i=1;i<=random;i++)
{
et.lista(veletlen(5,1));
}
}
int main () {
et.listazas(1);
return 0;
}
2014. febr. 17. 19:24
1/2 iostream válasza:
Amikor a srand-ot meghívod, ő inicializálja a randomgenerátort, seedeli. A ciklus annyira gyorsan lefut, hogy a time(0) értéke nem változik, tehát mindig ugyanarra az értékre seedeli a randomot. Adott seedű random sorozat első elemét kéred le folyamatosan. Ez természetesen mindig ugyanaz a szám lesz. Próbáld meg, hogy a srand(time(0));-t csak egyszer, a program elején hívod meg.
2/2 A kérdező kommentje:
Köszi.
Túl lassú wow.
2014. febr. 18. 16:56
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!
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!