Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Funkcja rand

Ostatnio zmodyfikowano 2014-06-01 20:10
Autor Wiadomość
marek252
Temat założony przez niniejszego użytkownika
Funkcja rand
» 2014-06-01 19:03:19
Witam.
Liczby z jakiego zakresu losuje funkcja rand()? Jeśli chcę np. liczbę z zakresu od 0 do 99 to może być tak?
x = rand() % 100
Czy rand() może wylosować liczbę ujemną?
Pozdrawiam
P-111276
pekfos
» 2014-06-01 19:04:04
rand() losuje liczby od 0 do RAND_MAX.
P-111277
marek252
Temat założony przez niniejszego użytkownika
» 2014-06-01 19:37:27
RAND_MAX mam sobie sam określić? Jeśli go nie określę, to do jakiej wielkości losuje?
P-111279
Moorfox
» 2014-06-01 19:44:10
RAND_MAX juz jest ustalony przez programistow tej funkcji

Powiedzmy ze RAND_MAX wynosi 32000

wtedy losuje sie miedzy 0-32000

Jednak jak zrobisz rand()%10
to powiedzmy ze rand zwraca 27932
to wynikiem działania 27932%10 jest 2 wiec twoja wygenerowana liczba to po prostu 2. Najwieksza jaka moze sie wygenerowac to 9
bo 27939%10 = 9 a juz 27940%10 = 0
Na takiej zasadzie używa się tej funkcji, aby otrzymać dany przedział trzeba kombinować albo użyć wzoru :P
P-111280
marek252
Temat założony przez niniejszego użytkownika
» 2014-06-01 19:49:52
Właśnie musiałem wylosować liczbę z danego przedziału i robiłem w ten sposób z resztą z dzielenia, tylko zastanawiało mnie to czy rand() może wylosować liczbę ujemną i jak duża może być to liczba. Jeszcze jedno pytanie. Mam np. taki kod:
C/C++
int x, licznik = 10;
for( int i = 0; i < licznik; i++ )
{
    x = rand() % 20;
    cout << x << endl;
}
Czemu za ka ż dym razem po uruchomieniu programu liczby s ą takie same tzn.pierwsza liczba to ci ą gle 3, druga to 8 itd.? Jak to zmieni ć ?
P-111281
Moorfox
» 2014-06-01 19:53:57
srand(time(NULL)); <-- wywołaj tą funkcje raz w programie przed użyciem rand() (nie wpisuj do funkcji losowania bo za kazdym razem bedzie wywolywana przy losowaniu, chociaż nic to nie zmieni po za tym, że losowanie będzie wykonywać się pare nano sekund dłużej, ale taka etykieta programistyczna)
Po prostu rand to nie losowanie liczby tylko generator liczb pseudolosowych, matematycznie nie ma czegoś jak losowanie dlatego nie można tego zaimplementować. Generowanie liczb pseudolosowych działa na podstawie czasu stąd ten time(NULL)zwraca czas, a dalej jak chcesz wiedzieć to sam się zainteresuj.
Polecam zacząć od tego filmiku:
https://www.youtube.com/watch?v=REQVOGiXplU&list=PL3B37AA87E119944E&index=2
P-111282
marek252
Temat założony przez niniejszego użytkownika
» 2014-06-01 20:10:08
Dzięki.
P-111284
« 1 »
  Strona 1 z 1