Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Różne metody losowania dużych liczb

Ostatnio zmodyfikowano 2013-08-07 18:21
Autor Wiadomość
rd26dett
Temat założony przez niniejszego użytkownika
[C++] Różne metody losowania dużych liczb
» 2013-08-07 01:37:55
Cześć, mam taki program:

C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int main() {
    srand( time( NULL ) );
    int x = 1000;
    int y = 1000;
    for( int i = 1; i <= 10000; i++ )
    {
        int n =( rand() % 1000000 ) + 1;
        cout << n << endl;
    }
    return 0;
}

Jak pewnie większość z Was wie, wyświetla on 10000 losowych liczb na ekranie.
Mój problem polega na tym że żadna z tych liczb nigdy nie przekracza 30 kilku tysięcy, mimo że chciałbym żeby były to liczby z zakresu 1-1 000 000. ( "(rand()%1000000)+1" ). Proszę o pomoc, z góry wielkie dzięki.
P-89649
Monika90
» 2013-08-07 07:50:32
Najwyraźniej w Twoim systemie RAND_MAX == 32767.
Zamiast
rand()
 możesz użyć
rand() *( RAND_MAX + 1 ) + rand()
, to trochę zwiększy zakres. Ale to raczej słabe rozwiązanie.

W pełni pawidłowym rozwiązaniem jest użycie innej biblioteki.
Jezeli masz nowoczesny kompilator, to masz bibliotekę standardową, czyli <random>.
W przeciwnym wypadku pozostaje Boost.Random.
P-89653
rd26dett
Temat założony przez niniejszego użytkownika
» 2013-08-07 10:07:08
Dziękuje, ale jednak mam chyba nieodpowiedni kompilator. Korzystam z programu Code::Blocks z kompilatorem GNU GCC, który nie rozpoznaje komendy "#include <boost/random.hpp>". Czy jest jakiś darmowy kompilator którego mógłbym użyć?
P-89656
pekfos
» 2013-08-07 10:50:32
boost nie jest domyślnie zainstalowany.
P-89660
rd26dett
Temat założony przez niniejszego użytkownika
» 2013-08-07 12:15:50
Przepraszam, jestem dość niedoświadczony jeżeli chodzi o programowanie, tak właściwie jestem samoukiem. Co mam zrobić żeby go zainstalować?
P-89672
pekfos
» 2013-08-07 12:19:56
Pobrać i zainstalować (skopiować pare plików i ew. skompilować).
P-89674
rd26dett
Temat założony przez niniejszego użytkownika
» 2013-08-07 12:26:47
P-89675
pekfos
» 2013-08-07 12:33:27
Tak..
P-89677
« 1 » 2 3
  Strona 1 z 3 Następna strona