[C++] Różne metody losowania dużych liczb
Ostatnio zmodyfikowano 2013-08-07 18:21
rd26dett Temat założony przez niniejszego użytkownika |
» 2013-08-07 14:38:49 Poddaje się. Nie potrafię tego zainstalować. Czy mógłby mi ktoś pomóc w tym? |
|
pekfos |
» 2013-08-07 15:29:03 Chyba prościej zainstalować nowszy kompilator i użyć biblioteki standardowej. Skoro masz tak stary, to i tak go w końcu zmienisz (btw, sprawdzałeś z flagą -std=c++11 (zakładam, że masz GCC)?) Co do boosta: Na ogół wystarczy skopiować nagłówki do odpowiedniego folderu kompilatora. Jeśli trzeba będzie kompilować, na stronie boosta jest wszystko opisane. |
|
jankowalski25 |
» 2013-08-07 15:29:37 ( rand() * rand() ) % 1000000 |
|
rd26dett Temat założony przez niniejszego użytkownika |
» 2013-08-07 15:40:11 Dziękuje Wam bardzo. jakowalski25, zdaje się że działa poprawnie. Jesteś pewien że teraz liczby będą z całego zakresu (tj. 1-1 000 000)? Pekfos, jaki kompilator polecasz? Dobrze by było gdyby był darmowy. |
|
pekfos |
» 2013-08-07 15:41:04 Taki jak Twój, tylko nowszy. |
|
Monika90 |
» 2013-08-07 16:20:08 @rd26 nie rozpoznaje komendy "#include <boost/random.hpp> |
A czy rozpoznaje #include <random> po dodaniu flagi -std=c++11 ? @jankowalski ( rand() * rand() ) % 1000000 |
To nie jest rozkład jednostajny. @rd26 Jeżeli już się uparłeś na używanie rand(), to już podałam rozwiązanie: ( rand() *( RAND_MAX + 1 ) + rand() ) % 1000000 + 1 |
|
rd26dett Temat założony przez niniejszego użytkownika |
» 2013-08-07 17:34:05 Proszę o wyrozumiałość, ale jestem samoukiem nie rozumiem pojęcia flaga. Jeżeli chcę aby losowanie było wypełni poprawne muszę użyć biblioteki #include <random>? Gdy próbuje takową zadeklarować Code::Blocks pokazuje mi taki komunikat:
#ifndef _CXX0X_WARNING_H #define _CXX0X_WARNING_H 1
#ifndef __GXX_EXPERIMENTAL_CXX0X__ #error This file requires compiler and library support for the \ ISO C++ 2011 standard. This support is currently experimental, and must be \ enabled with the -std=c++11 or -std=gnu++11 compiler options. #endif
#endif
Rozumiem, że powinienem pobrać nowsza wersje kompilatora GNU? Zaznaczyłem w opcjach kompilatora "[-std=c++11]". Code::Blocks już nie wyświetla powyższego komunikatu, lecz program nadal pokazuje liczby tylko do 30 kilku tysięcy. |
|
Monika90 |
» 2013-08-07 18:15:36 To się samo nie zrobi, musisz zmienić program, przykładowo: std::default_random_engine rnd( std::time( NULL ) ); std::uniform_int_distribution < int > distr( 1, 1000000 ); for( int i = 0; i < 1000; ++i ) std::cout << distr( rnd ) << std::endl;
|
|
1 « 2 » 3 |