Generacja liczb losowych z zakresu wyznaczonego

0

Tak jak w temacie nie moge wygenerowac liczb które postawie sobie w zakresie np.
q=20 w=40
To zawsze wywala mi kosmiczna liczbe.
Prosze o pomoc z gory dziekuję.

void losowo ( int * tab, int x,int i,int n,int y)
{	
	int q,w,lb;
	cout<<"Podaj przedział  liczb jakie mają być losowane\n zaczynajac od ";
	cin>>q;
	cout<<"do";
	cin>>w;
	for (i=0; i<x; i++)

int i = q + (int)(rand() / (RAND_MAX + 1.0) * w);

n = n+1;
cout<<"liczba["<<n<<"]="<<tab[i]<<"\n";
}


int main()
{
int x,wybor;
cout <<"Podaj dlugosc ciagu  ";
cin >>x;
tab = new int[x];
cin >> wybor;

if (wybor == 1)
{
	 losowo (tab, x, i, n, y);
	




}










0

Ten kod się w ogóle kompiluje? Co to jest tab? Ta pętla for też jakaś podejrzana, dlaczego wewnątrz niej zmieniasz jej licznik? Nie wiem czy wiesz, ale w tej pętli wykonuje się tylko jedna linijka.

A propos losowania, to możesz zainteresować się odpowiednimi klasami C++.

0

int i = q + (int)((w-q+1)*rand() / (RAND_MAX + 1.0)) ;

1

Dla zakresu wystarczy

rand()%(max-min+1) + min
0
Krycho napisał(a):

Dla zakresu wystarczy

rand()%(max-min+1) + min

Robie tak jak piszesz i nie idzie.... ;/





void losowo ( int * tab, int x,int i,int n,int y)
{	
	int q,w,e;
	cout<<"Podaj przedział  liczb jakie mają być losowane\n zaczynajac od ";
	cin>>q;
	cout<<"do";
	cin>>w;
	

for (i=1; i<x; i++)
{

    e=rand()%(q-w+1) + w;
  
    printf("%d\t", e);
}
}
   






int main()
{
int x,tab;
cout <<"Podaj dlugosc ciagu  ";
cin >>x;
tab = new int[x];
}

















0
Domen napisał(a):

Robie tak jak piszesz i nie idzie.... ;/
Nadaj zmiennym zrozumiałe dla ciebie nazwy. Gdyby zmienne nazywali się min i max a nie q i w to byś się nie pomylił. Zrobiłeś: rand()%(min-max+1)+max

1 użytkowników online, w tym zalogowanych: 0, gości: 1