2016-08-30 12 views
1

rand()の最大数は32767です。外部ライブラリなしで1〜10^6(1百万)の値を持つ乱数を生成することができますか?C++ 1から10^6までの乱数を生成するには?

+2

C++ 11を使用できる場合は、http://en.cppreference.com/w/cpp/numeric/random – Xarn

+0

(古代)16ビットプラットフォームを使用していますか? –

+2

1)1または2の数字を生成する。2)1の場合は1、10の場合は1を、2の場合は1を生成し、10を加算する。10.3)大きな数字を一般化する。 – user463035818

答えて

2

「外部ライブラリ」の意味がわかりませんが、C++ 11 randomライブラリでは非常に簡単です。汎用の乱数については

std::default_random_engine engine{std::chrono::steady_clock::now().time_since_epoch().count()}; 
std::uniform_int_distribution<int> range{1, 1'000'000}; 

int randomly_generated_number = range(engine); 
int another_randomly_generated_number = range(engine); 

、私はおそらく代わりにstd::default_random_engineの(64ビットマシン上またはstd::mt19937_64std::mt19937を使用してお勧めしますが、デフォルトのエンジンは、学習の目的のために優れています。

+1

'1'000'000'のような数字を書くことはできますか? –

+0

@ArnavBorborah何かになったのかどうかは分かりませんが(私はC++ 14と思う)、アポストロフィ記号は数字の区切り記号として使用することができます。 – Xirema

+0

はい、これはC++ 14で発生しました。 "オプションの一重引用符( ')は区切り記号として数字の間に挿入することができ、コンパイラによって無視されます。\t(C++ 14以降)"(http://en.cppreference.com/w/cpp/language/ integer_literal)。 –

関連する問題