2

5 つの異なる乱数が必要ですが、生成される桁数は同じです。

私はこのコードを持っています:

int main()
{
  srand(time(0));
  unsigned int num1 = rand();
  cout << "random number 1 = " << num1 << endl;
  unsigned int num2 = rand();
  cout << "random number 2 = " << num2 << endl;
  unsigned int num3 = rand();
  cout << "random number 3 = " << num3 << endl;
  unsigned int num4 = rand();
  cout << "random number 4 = " << num4 << endl;
  unsigned int num5 = rand();
  cout << "random number 5 = " << num5 << endl;
}

出力は次のとおりです。

random number 1 = 278203697
random number 2 = 2102275865
random number 3 = 1018298572
random number 4 = 1658370388
random number 5 = 429634923

一方、私の望ましい出力は、すべての数字に対して同じ桁数を生成することです。例えば:

random number 1 = 278203697
random number 2 = 210227586
random number 3 = 101829857
random number 4 = 165837038
random number 5 = 429634923

私が望む出力のようにする方法は?

ありがとう、助けてくれてありがとう

4

3 に答える 3

4

すべての数字に同じ桁数を含めたい場合は、多くの乱数を作成する必要があります。または、クラスのように、C++11 で導入されたいくつかの新しい機能を使用します。std::uniform_int_distribution

std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<> dis(100000000, 999999999);

for (int n = 1; n <= 5; ++n)
    std::cout << "random number " << n << " = " << dis(gen) << '\n';

出力の幅を設定して、先頭にゼロを埋め込むこともできます。

std::cout << std::setw(10) << std::setfill('0') << std::rand() << '\n';
于 2013-08-29T11:16:32.613 に答える
-1

次のように、100000000 から 999999999 (すべて 9 桁の数字) の範囲のランダムな整数を生成できます。

#include<cstdlib>

unsigned int num1 = rand()%900000000+100000000;

こちらもご覧ください

cstdlib RAND_MAX私のシステム (Debian Squeeze g++ 4.4) では 2147483647 です。

于 2013-08-29T11:15:51.147 に答える