[C++] Różne metody losowania dużych liczb
Ostatnio zmodyfikowano 2013-08-07 18:21
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:
#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. |
|
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. |
|
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ć? |
|
pekfos |
» 2013-08-07 10:50:32 boost nie jest domyślnie zainstalowany. |
|
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ć? |
|
pekfos |
» 2013-08-07 12:19:56 Pobrać i zainstalować (skopiować pare plików i ew. skompilować). |
|
rd26dett Temat założony przez niniejszego użytkownika |
» 2013-08-07 12:26:47 |
|
pekfos |
» 2013-08-07 12:33:27 Tak.. |
|
« 1 » 2 3 |