zwykle generuje liczby losowe poprzez uzycie funkcji rand(). jednak w kazdym odpaleniu programu funkcja ta daje taki sam zestaw liczb. jak tego uniknac?
Czy wolisz polską wersję strony elektroda?
Nie, dziękuję Przekieruj mnie tamMystic Vintage napisał:Przed instrukcją losowania dopisz Randomize(); powinno zwiększyć przypakowość
pzdr
deavt napisał:Macie racje co do procedury rand(), ale generuje ona liczbę losową na podstawie czasu. Jeśli wygeneruje się kilka liczb w tej samej sekundzie będą one takie same.
A jak zrobić żeby w jednej sekundzie wylosować wieke różnych liczb?
deavt napisał:Macie racje co do procedury rand(), ale generuje ona liczbę losową na podstawie czasu. Jeśli wygeneruje się kilka liczb w tej samej sekundzie będą one takie same.
A jak zrobić żeby w jednej sekundzie wylosować wieke różnych liczb?
...
/* x jest wygenerowaną liczbą pseudolosową */
srand(x);
return x;
}ed-ek napisał:Masz przykład losowania 5 liczb z powtórzeniami z 10 liczb:
for ( a =0 ; a<i ; a++)
{
z[a]= rand()% 10 ;
cout<<" "<<z[a];
}
for ( a =0 ; a<p ; a++)
{
z[a]=0;
}
a = 0;
int funkcja3(void)
{
int i,j,k ,h;
cout<<"Podaj ilosc probek do wylosowania:\n";
cin>>i;
cout<<"Podaj dolny przedział możliwy do wylosowania:\n";
cin>>j;
cout<<"Podaj górny przedział możliwy do wylosowania:\n";
cin>>k;
cout<<"Wylosowane probki:\n";
for ( a =0 ; a<i ; a++)
{
h=rand()% 1 ;
cout<<h;
if(h==1)
{
h=1;
}
else
h=-1;
z[a]= h * (rand()% 10) ;
cout<<" "<<z[a];
}
for ( a =0 ; a<p ; a++)
{
z[a]=0;
}
a = 0;
int r05 = (rand() / RAND_MAX) * 5;int r08 = (rand() / RAND_MAX) * 8;
int rm35 = r08 - 3;
int funkcja3(void)
{
int i,j,k ,h,h1,h2;
cout<<"Podaj ilosc probek do wylosowania:\n";
cin>>i;
cout<<"Podaj dolny przedział możliwy do wylosowania:\n-";
cin>>j;
cout<<"Podaj gorny przedział możliwy do wylosowania:\n";
cin>>k;
cout<<"Wylosowane probki:\n";
for ( a =0 ; a<i ; a++)
{
h1=rand() % j ;
h2=rand() % k ;
x[a]=h2-h1;
cout<<h1<<" "<<h2<<" ";
cout<<x[a];
h1=0;
h2=0;
cout<<"\n";
}