Funkcja rand
Ostatnio zmodyfikowano 2014-06-01 20:10
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 |
|
pekfos |
» 2014-06-01 19:04:04 rand() losuje liczby od 0 do RAND_MAX. |
|
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? |
|
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 |
|
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: 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 ć ? |
|
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 |
|
marek252 Temat założony przez niniejszego użytkownika |
» 2014-06-01 20:10:08 Dzięki. |
|
« 1 » |