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

Liczby pseudolosowe

Object Storage Arubacloud
0 głosów
240 wizyt
pytanie zadane 8 lutego 2016 w C i C++ przez Noak Mądrala (5,900 p.)

Mam kłopot z wygenerowaniem liczb pseudolosowych. zależy mi na dość sporym przedziale <1, 2*10^7>.

Niestety za pomocą zwykłego sposobu

srand( time( NULL ) );
int liczba  rand() % 20000000  +1;

losuje mi maksymalnie liczby 5 cyfrowe.

Jest jakiś sposób aby wylosować większe liczby ??

 

 

2 odpowiedzi

+3 głosów
odpowiedź 8 lutego 2016 przez Sedi Stary wyjadacz (10,200 p.)
wybrane 8 lutego 2016 przez Noak
 
Najlepsza

Hmm, na początku musisz wiedzieć jak działa srand(time(NULL)). Występuje w nim rozkład normalny. Brzmi to strasznie, ale polega to po prostu na tym, że liczby bardzo często się powtarzają. Szczegóły w tym wątku:

https://forum.pasja-informatyki.pl/87530/liczby-losowe-ale-nie-pseudo?show=87536

Ciekawostki:

  • Int przechowuje liczby z zakresu: −2 147 483 648 — +2 147 483 647
  • Jeśli chciałbyś mieć większe liczby, proponuję long long int.
  • Proponuję też zainteresować się "lepszymi" generatorami liczb pseodolosowych(prawdziwie losowych nie ma). Ot np. random_device. Jeśli używasz Code::Blocksa, włącz w opcjach używanie C++11. Pamiętaj również o utworzeniu przedziału i o użyciu właściwego generatora np. std::mt19937. Nazwa wzięła się od jego okresu, który tyle wynosi(a dokładnie wynosi: 2 ^19937-1);

Pozdrawiam 

komentarz 8 lutego 2016 przez Noak Mądrala (5,900 p.)
Pracuję na Dev-C++. Zmiana typu nie pomaga. Przejrzę sobie nowe generatory liczb(wcześniej nie wiedziałem że istnieją). Dziękuję za pomoc.
komentarz 8 lutego 2016 przez niezalogowany
Jeśli używa GCC i ma windowsa to random_device nie będzie działało poprawnie.
0 głosów
odpowiedź 8 lutego 2016 przez secsec Mądrala (7,250 p.)
long, long long zamiast int.
komentarz 8 lutego 2016 przez Noak Mądrala (5,900 p.)
Nie działa. Ale dzięki twojemu wpisowi wpadłem na pomysł że będę je losował jako pojedyncze cyfry.

Podobne pytania

0 głosów
4 odpowiedzi 474 wizyt
pytanie zadane 17 listopada 2015 w C i C++ przez subterras Użytkownik (680 p.)
0 głosów
1 odpowiedź 206 wizyt
pytanie zadane 20 października 2015 w Inne języki przez Krzysztof Rampa Nowicjusz (190 p.)
0 głosów
2 odpowiedzi 232 wizyt
pytanie zadane 31 grudnia 2015 w C i C++ przez Konrad Nabożny Stary wyjadacz (13,460 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 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!

...