-4

私は何を間違っていますか?a乱数が欲しい。負の整数と正の整数

#include <iostream>
#include <cstdlib>
int main(){
   int a;
   cin<<a;
   int t[a];
   for(int i=0;i<a;i+=1)
      t[a]=rand();
   for(int i=0;i<a;i++)
      cout>>t[i];
}

私は非常に初心者で、乱数が欲しかったのですが、非常に大きなものは 1 つしかありません。誰でも助けることができますか?

申し訳ありませんが、私が見ていない問題があります。今、私は書くだけでいいことを知っています>>endl

編集: コードを修正したところ、動作するようになりました

#include <cstdlib>
#include <time.h>
int main(){
   int a;
   cin>>a;
   for(int i=0;i<a;i++)
      cout<<(rand()-rand())<<endl;//i asked only for this "endl"
}
4

4 に答える 4

2

乱数ジェネレーターをシードしていません。プログラムの開始時に呼び出しsrand()ます。

通常の方法は、現在の時刻が何であれ、それを呼び出すことです:

std::srand(std::time(0))

も含める必要があります<ctime>

rand() 負の値を返さないことに注意してください。このロジックは、自分で実装する必要があります。

于 2013-04-27T22:21:41.440 に答える
1

100% かどうかはわかりませんが、IMO は、実行可能ファイルがコンパイルされた時間に応じて、 からまでのrand()正の数値のみを作成できます。これは、ファイルをコンパイルすると、同じ数値が何度も返されることを意味します。 !065535.exe

彼にさまざまな数字を出させるには、 を使用する必要がありますsrand()

別のこと: C++ では、type array[n][標準にはない!] で動的配列を割り当てることはできません。コンパイラで許可されている場合でも! 実際、コンパイラは、キーワードarray = new type[n]の割り当てを解除する必要があるという点でコードを変換します。delete[]

于 2013-04-27T22:35:08.347 に答える