你好我想要打印数字从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;
}
我不知道为什么,但所有数字都是否定的?
答案 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是包含范围。