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

Kody źródłowe zaimplementowanych funkcji

Object Storage Arubacloud
0 głosów
288 wizyt
pytanie zadane 6 września 2017 w C i C++ przez rocknroll111 Nowicjusz (140 p.)

Pytanie od zielonego laika, mam nadzieję że ma ono sens:
Jestem na etapie przerabiania losowości w programach w oparciu o funkcję srand(time(NULL)) w c++; W materiale dotyczącym tego zagadnienia spotkałem się ze stwierdzeniem, tutaj cytuję: "Do wygenerowania liczby pseudolosowej komputer będzie potrzebować pewnej wartości, zwanej ziarnem, która zostanie poddana transformacjom matematycznym przekształcającym ją w kolejną liczbę. [...] Używane w tym celu przekształcenia matematyczne zostały starannie dobrane,[...]".
Pytanie brzmi: gdzie i czy w ogóle mógłbym podejrzeć kod tej i innych funkcji "fabrycznie" zaimplementowanych w IDE? 

komentarz 6 września 2017 przez DragonCoder Nałogowiec (36,500 p.)
Ale funkcja do losowania liczb to rand, a funkcja srand pobiera ilosc sekund, ltore uplynely od roku 1970. Jak sam uauwazyles, zeby uzyc tej funkcji potrzebujesz inplementacji boblioteki stdlib, jesli sie nie myle. Oznscza to, ze funkcja ta jak i inne, zawarte sa w bibliotekach, a zeby zobaczyc inne funkcje, wystarczy zajrzec do dokumentacji :)
komentarz 6 września 2017 przez rocknroll111 Nowicjusz (140 p.)
Czaję, wiem o co chodzi. Tylko ja nie pytałem o zbiór funkcji dostępnych w danej bibliotece, lecz algorytmy tych funkcji.
Strona C++ Reference podaje zbiór bibliotek i zawartych w nich funkcji, przykład zastosowania i słowne(pisemne?) wyjaśnienie zasady działania... a mi chodzi o kod źródłowy tych funkcji. Źródłowy, maszynowy zapis kodu np. funkcji rand().

Mam nadzieję że już wiadomo o co mi chodzi :)
2
komentarz 6 września 2017 przez criss Mędrzec (172,590 p.)

@DragonCoder:

funkcja srand pobiera ilosc sekund, ktore uplynely od roku 1970.

srand służy do inicjalizacji ziarna (wartości używanej przez rand przy "losowaniu"). Tak, często inicjalizuje się ją wywołaniem time(), ale tylko dlatego, żeby to nie była stała. Także srand nie pobiera "ilości sekund które upłynęły od roku 1970".

@rocknroll111:

Do kodu źródłowego ciężko się dostać, bo nieszablonowe funkcje są już skompilowane i zamknięte w jakichś bibliotekach. Implementacje można jednak znaleźć gdzieś w internetach. Nie wiem czy to aktualne implementacje, ale na pewno mogą ci dać obraz tego, jak to wygląda:

1 odpowiedź

0 głosów
odpowiedź 6 września 2017 przez unknown Nałogowiec (39,560 p.)

Zależy z jakiej implementacji korzystasz. Najpopularniejsze to:

Dla C

  • glibc
  • musl
  • dietlibc

Dla C++

  • libstdc++
  • libc++

Wystarczy, że poszukasz ich kodów źródłowych i będziesz wiedział co i jak. 

Jednak podejrzewam, że większość implementacji korzysta z LCG: https://en.m.wikipedia.org/wiki/Linear_congruential_generator

Podobne pytania

0 głosów
3 odpowiedzi 440 wizyt
pytanie zadane 16 sierpnia 2019 w Sprawy forum przez niezalogowany
0 głosów
2 odpowiedzi 231 wizyt
pytanie zadane 15 października 2019 w Inne języki przez LubieNalesniki Użytkownik (610 p.)
0 głosów
1 odpowiedź 495 wizyt
pytanie zadane 26 kwietnia 2015 w C i C++ przez TheFunny Gaduła (3,420 p.)

92,572 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...