• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Liczby pseudolosowe w C++

VPS Starter Arubacloud
0 głosów
1,364 wizyt
pytanie zadane 28 listopada 2015 w C i C++ przez thekibi27 Bywalec (2,110 p.)

Witam!

W jednym z tutoriali Pana Zelenta jest tłumaczone jak działa "losowanie" liczby pseudolosowej w C++.

Przy poniższym kodzie komputer wykorzystuje czas, aby wylosować liczbę:

 

srand(time(NULL))
liczba=rand()%100

Ale jak komputer losuje liczbę, gdy w kodzie jest tylko liczba=rand()%100? Jeżeli wtedy także wykorzystuje czas, to jaka jest różnica gdy dopiszemy tą drugą linijkę powyższego kodu?

3 odpowiedzi

+1 głos
odpowiedź 28 listopada 2015 przez 0e85dc6eaf Dyskutant (8,840 p.)
Srand() pobiera czas w trakcie działania programu, a normalnie byłby wzięty czas kompilacji
0 głosów
odpowiedź 28 listopada 2015 przez Grzyboo Nałogowiec (28,860 p.)
srand() ustawia począkową wartość dla "losowania". Jeżeli tego by nie było, to za każdym włączeniem programu losowane by były dokładnie te same liczby.

rand() losuje liczbę z przedziału 0 - RAND_MAX

%100 jest tutaj wykorzystywany po prostu, aby z tej często dużej liczby uzyskać liczbę z przedziału 0-99
komentarz 28 listopada 2015 przez thekibi27 Bywalec (2,110 p.)
Dobra, ale chodziło mi właśnie o wyjaśnienie samego mechanizmu, jak komputer uzyskuje tą liczbę z przedziału 0 - RAND_MAX przy poleceniu rand(), bo jak dobrze wiemy komputer sam z siebie nie potrafi wylosować liczby.

Przy dopisku srand(time(NULL)) było wyjaśnianie w tutorialu, że jest wykorzystywany czas, ale komputer potrafi jakoś wylosować liczbę także bez tego dopisku.
komentarz 28 listopada 2015 przez Grzyboo Nałogowiec (28,860 p.)
No to chyba się nie da powiedzieć. To jest po prostu skomplikowany algorytm, który na podstawie liczby startowej daje jakiś pseudoloswy wynik i zmienia liczbę startową, aby następne losowanie miało inny wynik.
komentarz 28 listopada 2015 przez Dorion300 Szeryf (90,250 p.)
W tutorialu pan Mirek także tłumaczył jak działa samo "rand"...
0 głosów
odpowiedź 28 listopada 2015 przez Szahid Pasjonat (20,930 p.)
Mam dla Ciebie propozycje. Znajdź funkcje srand () w odpowiedniej bibliotece i zobacz jak ona działa. (Przy okazji możesz wyrzucić znaleziony kod w odpowiedzi na mój komentarz bo sam chętnie ją obejrze)

Podobne pytania

0 głosów
3 odpowiedzi 278 wizyt
pytanie zadane 18 kwietnia 2015 w C i C++ przez M4tthew Gaduła (4,480 p.)
0 głosów
1 odpowiedź 399 wizyt
pytanie zadane 23 września 2020 w C i C++ przez Dezmonths Początkujący (310 p.)
0 głosów
6 odpowiedzi 396 wizyt
pytanie zadane 19 lipca 2018 w C i C++ przez bubu91 Nowicjusz (160 p.)

92,453 zapytań

141,262 odpowiedzi

319,086 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...