[C++]Losowanie "świeżych/nowych" liczb


(K Ilak) #1

Oto fragment kodu:

int losuj(int a)

{

 int b=0;

srand (static_cast(time(NULL)));  

b=rand() % a;


return b;

}




int main(int argc, char *argv[]) {

	int i;

cout << "Losowanie 6 liczb sposrod 40: ";


for (i=0; i<=6; i++)

{

	cout << losuj(40) << "\n";

}

}

Problem jest taki, że nie wiem jak zrobić, aby nie pojawiało się 6 TAKICH SAMYCH LICZB, ale 6 INNYCH LICZB.


(Manonim93) #2

Moim zdaniem powinieneś inicjować seeda w main, ponieważ gdy robisz to w funkcji (małej i szybkiej) to sześć razy wykonuje się ona w tej samej sekundzie i dlatego dla każdego losowania seed jest taki sam (bo cały czas jest ta sama sekunda). Natomiast gdy zrobisz seeda w main to do kolejnego losowania seedem nie będzie już czas a wynik z poprzedniego losowania :smiley:

EDIT: czyli funkcja srand() ma być w main :smiley: - tak po polskiemu :smiley:


(K Ilak) #3

niestety, to samo…


(Manonim93) #4

U mnie działa :smiley: Coś sknociłeś

#include 

#include 

#include 


using namespace std;


int losuj(int a)

{

	int b=0;

	b=rand() % a;

	return b;

}



int main(int argc, char *argv[]) 

{

	int i;

	srand (static_cast(time(NULL))); 

	cout << "Losowanie 6 liczb sposrod 40: ";

	for (i=0; i<=6; i++)

	{

		cout << losuj(40) << "\n";

	}

}

(K Ilak) #5

DZiała, dzięki wielkie :smiley:


([alex]) #6

Chrzani waść, a gdzie deklaracja rand() siedzi ?