0

こんにちは、30 から -30 までの数字を出力したいのですが、これが私のコードです

#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;

int main(){

   srand(time(0));
   int arr[20] = {0};
   for(int i = 0; i < 20; i++){    
      arr[i] = rand() % 30+(-30);
   }
   for(int i = 0; i < 20; i++){
      cout << arr[i] << " "<<endl;
   }
   return 0;
}

理由はわかりませんが、すべての数値がマイナスですか?

4

2 に答える 2

7

ロジックに問題があります...0から30までの数値を生成し、次に30を減算します...取得できる最大数は0です...

arr[i] = (rand() % 61) - 30;

あなたが望むものを与えます

于 2012-01-14T09:31:50.827 に答える
6

使うべきだった、

arr[i] = (rand() % 61) - 30

もっと詳しく言えば、

arr[i] = (-30) + (rand() % ((30)-(-30)+1))  // base + range

-30から30が包括的範囲であると仮定します。

于 2012-01-14T09:31:27.337 に答える