ďťż

Ładny brzuch

Witam!
Ogolnie chodzi mi o prosta rzecz heh ktorej centralnie nie rozumiem :)

Chce wylosowac liczby z podanego wczesniej przedzialu liczb.
uzywam tu polcenia rand()%b+a;

a-od
b-do

Wszytsko gra jak dam np. od 1 do 6, natomiast gdy sa to liczby dwucyfrowe i inne to wyszukuje liczby poza przedzialem... Jak to zrobic, wie ktos ? :)

Pozdrawiam,
kusiu :D



int i = rand()%100+1;
powyższy fragment losuje Ci liczby z przedziału 1-100 ;)

edit:
hmm... może spróbuj dać typ dla zmiennych a i b long? :blink:

edit 2:
a funkcja rand() u ciebie jest czystego typu int?
Użytkownik virus_jc edytował ten post 19 grudzień 2005, 15:17
A może tak:int i = (rand()%4+9)+200;
Wychodzi przedział od 204 do 209

Może lepiej wytłumaczę jak to się robi:
1. załóżmy, że losujemy od 10 do 20
2. piszemy, np:
int i = ((rand()%10)+1); //+1 żeby było od 1 do 10
3. wyliczamy różnicę pomiędzy liczbą max, a min, w tym przypadku będzie to 10 (bo 20-10) i tą liczbę dodajemy do wyniku, a więc pełna instrukcja wygląda tak:
int i = ((rand()%10)+1)+10;
4. warto dodać oczywiście srand(time(NULL));
5. i skompilować kod
6. i zobaczyć rezultat
7. pozdrawiam. B)

//EDIT
reklamacje proszę zgłaszać
Użytkownik comp123 edytował ten post 19 grudzień 2005, 16:36


No wlasnie tylko chodzi o to ze jak zapisac zapytanie hmm... Moj kod jest nastepujacy:

#include <iostream.h> #include <vcl.h> #include <conio.h> #include <stdlib.h> void main() { randomize(); int long losowa, a ,b; cout<<"Od: "; cin>>a; cout<<"Do: "; cin>>b; losowa=rand()%b+a; cout<<losowa; getch(); }

No i hmm jesli dam liczby np. 2,8 jest wszytsko okey losuje z tego przedzialu a gdy dam liczby dwucyfrowe wychodza cyrki :) np. 12, 34 wychodzi 36:)
jak zapisac uniwersalne zapytanie nie tylko do liczb pojedynczych jesli ktos uzyczy swej wiedzy bede wdzieczny:)

Pozdrawiam,
kusiu :D

//codebox !
Użytkownik migajek edytował ten post 19 grudzień 2005, 17:30
chyba teraz będzie dobrze (kod przerób pod swój kompilator):
#include <iostream> #include <conio.h> #include <stdlib.h> #include <ctime> using namespace std; int main() { srand(int(time(NULL))); int long losowa, a ,b; cout<<"Od: "; cin>>a; cout<<"Do: "; cin>>b; long c = b - a; c++; losowa=(rand()%c)+a; cout<<losowa; getch(); }
reklamacje zgłaszaj :D
Użytkownik comp123 edytował ten post 19 grudzień 2005, 17:32
pieknie:)
Dzienks!:)

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •