ранд от -30 до 30 - PullRequest
       22

ранд от -30 до 30

0 голосов
/ 14 января 2012

Здравствуйте, я хочу напечатать числа от 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 ]

7 голосов
/ 14 января 2012

У вас проблема с логикой ... Вы генерируете числа от 0 до 30, а затем вычитаете 30 ... Максимальное число, которое вы можете получить, это 0 ...

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

дает вам то, что вы хотите

6 голосов
/ 14 января 2012

Вы должны были использовать,

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

Более многословно,

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

Предполагая, что от -30 до 30 - это включающий диапазон .

...