1
C/C++ / std::srand
« dnia: 2016-09-08, 13:42:19 »
Witam,
mam problem z rand(), funkcja bardzo często zwraca mi te same wartości, moim zdaniem nie powinno tak być. Program poprawnie zapisuje liczby od 1 do 80 w tablicy. rand() % x - zwraca losową liczbe z zakresu od zera do x jak rozumiem. Wylosowana liczba trafia na koniec a kocowa liczba jest zapisywana w miejsce wylosowanej, jakim cudem program mi zwraca czasem te same liczby ?
mam problem z rand(), funkcja bardzo często zwraca mi te same wartości, moim zdaniem nie powinno tak być. Program poprawnie zapisuje liczby od 1 do 80 w tablicy. rand() % x - zwraca losową liczbe z zakresu od zera do x jak rozumiem. Wylosowana liczba trafia na koniec a kocowa liczba jest zapisywana w miejsce wylosowanej, jakim cudem program mi zwraca czasem te same liczby ?
Kod: [Zaznacz]
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int losowanie( int min, int max )
{
// srand( time( 0 ) );
std::srand(std::time(0));
return( rand() % max ) + min;
}
int main()
{
int liczba[ 100 ];
int licznik = 10;
int lin = 0;
int los = 0;
int mt = 89;
int pom = 0;
int pom2 = 0 ;
do
{
liczba[ licznik ] = licznik -9 ;
licznik++;
} while( licznik < 90 );
do
{
do
{
int dd = losowanie( 10, mt );
cout << liczba[ dd ] << ", ";
lin++;
pom = liczba[dd];
pom2 = liczba[mt];
liczba[mt] = pom;
liczba[dd] = pom2;
mt--;
} while( lin < 10 );
std::cout << std::endl ;
los++;
lin = 0 ;
} while ( los < 8 );
return 0;
}