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

Liczby pseudolosowe

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
302 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 745 wizyt
pytanie zadane 17 listopada 2015 w C i C++ przez subterras Użytkownik (680 p.)
0 głosów
1 odpowiedź 236 wizyt
pytanie zadane 20 października 2015 w Inne języki przez Krzysztof Rampa Nowicjusz (190 p.)
0 głosów
2 odpowiedzi 309 wizyt
pytanie zadane 31 grudnia 2015 w C i C++ przez Konrad Nabożny Stary wyjadacz (13,480 p.)

93,191 zapytań

142,206 odpowiedzi

322,042 komentarzy

62,518 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 3053p. - dia-Chann
  2. 2998p. - Łukasz Piwowar
  3. 2993p. - Łukasz Eckert
  4. 2970p. - CC PL
  5. 2930p. - Tomasz Bielak
  6. 2907p. - Łukasz Siedlecki
  7. 2890p. - rucin93
  8. 2584p. - Adrian Wieprzkowicz
  9. 2536p. - Mikbac
  10. 2485p. - Marcin Putra
  11. 2461p. - Michał Telesz
  12. 2418p. - Michal Drewniak
  13. 2156p. - Anonim 3619784
  14. 1733p. - rafalszastok
  15. 1650p. - Mariusz Fornal
Szczegóły i pełne wyniki

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...