Kilkukrotna generacja liczb pseudolosowych

Kilkukrotna generacja liczb pseudolosowych
S2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 33
0

Spotkałem się z pewnym problem związanym z generowaniem liczb. Chodzi o to że w grze w statki gracz gra z komputerem. Na początku generuje plansze ze statkami komputera. Ustawienie tych statków zrobiłem w sposób losowy opierający się na generowaniu liczb z danego zakresu i przypisywaniu go jako współrzędnych planszy. I teraz robi się problem bo podczas wywołania programu czas systemu nie zdązy się zmienić stąd generator powiela wylosowane liczby, a to skutkuje błędnym działaniem. Czy jest możliwość zrobienia czegoś żeby podczas jednego wywołania programu otrzymać różne wyniki? Przeglądałem google i forum ale nie znalazłem nic konkretnego. Poniżej podaje funkcje których używam:

Kopiuj
int Silnik::Los()
{
	return (rand() % 10) + 1;
}
int Silnik::Losowa_Liczba()   //zwraca losową liczbe do wyboru pola
{
	srand(time(0));

	return Los();
}
Kopiuj
void Silnik::Umieszczenie_Trojmasztowca() //Umieszenie trójmasztowca
{
	int x = Losowa_Liczba();
	int y = Losowa_Liczba();

       //code..

Kopiuj
void Silnik::Umieszczenie_Czteromasztowca()
{
	int x = Losowa_Liczba();
	int y = Losowa_Liczba();

       // code..
Kopiuj
 void main()
{
Silnik gra;

gra.Umieszczenie_Czteromasztowca();

gra.Umieszczenie_Trojmasztowca();

      // code..
}
twonek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2500
3

Wrzuć

Kopiuj
srand(time(NULL));

do main. Wystarczy raz.

S2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 33
0

no wygląda to teraz lepiej ;)
Dzięki ;)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.