Generacja liczb losowych z zakresu wyznaczonego

2012-12-06 22:44
Domen
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);

}

Pozostało 580 znaków

2012-12-06 23:00
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++.


"(...) otherwise, the behavior is undefined".
edytowany 1x, ostatnio: Endrju, 2012-12-06 23:05

Pozostało 580 znaków

2012-12-06 23:00
0

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


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 1x, ostatnio: _13th_Dragon, 2012-12-06 23:32

Pozostało 580 znaków

2012-12-06 23:06
1

Dla zakresu wystarczy

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

!user image
I am the master of my fate. I am the captain of my soul.

Pozostało 580 znaków

2012-12-06 23:23
Domen
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];
}

Pozostało 580 znaków

2012-12-06 23:34
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


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 1x, ostatnio: _13th_Dragon, 2012-12-06 23:35
tak a propos kiedys mialem sen, ze na forach programistycznych srednio pojawial sie 1 post na miesiac bo ludzie zaczeli nazywac zmienne jak ludzie i formatowac kod :) - n0name_l 2012-12-07 00:08
Zapomnij, to tylko surrealistyczny sen ... - _13th_Dragon 2012-12-07 00:10

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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