兰特从-30到30

时间:2012-01-14 09:28:39

标签: c++ random srand

你好我想要打印数字从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;
}

我不知道为什么,但所有数字都是否定的?

2 个答案:

答案 0 :(得分:7)

你的逻辑有问题...你从0-30生成数字然后减去30 ...你可以获得的最大数字是0 ...

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

给你你想要的东西

答案 1 :(得分:6)

您应该已经使用过,

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

更详细,

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

假设-30到30是包含范围