rand 相关的这个怎么解决

调用随机函数rand,生成并记录(保存)40个整数,整数取值范围为[-50,
50],统计所有数的和、其中正数的和及正数的个数、负数的和及负数的个数,
并输出结果。要求:
40个整数分5行输出,每行8个数据,右对齐;

#include <iostream>
#include <iomanip>
#include <ctime>
#include <cstdlib>

int main()
{
    const int N = 40;
    int nums[N];
    int count_pos = 0, sum_pos = 0, count_neg = 0, sum_neg = 0;
    std::srand(std::time(0));
    for (int i = 0; i < N; i++)
    {
        nums[i] = static_cast<int>(-50 + 100.0 * rand() / RAND_MAX);
        if (nums[i] > 0)
        {
            count_pos++;
            sum_pos += nums[i];
        }
        else if (nums[i] < 0)
        {
            count_neg++;
            sum_neg += nums[i];
        }
    }
    for (int i = 0; i < N; i++)
    {
        std::cout << std::setw(5) << std::right << nums[i];
        if ((i + 1) % 8 == 0)
            std::cout << '\n';
    }
    std::cout << "Number of positive numbers: " << count_pos << '\n'
              << "Sum of positive numbers: " << sum_pos << '\n'
              << "Number of negative numbers: " << count_neg << '\n'
              << "Sum of negative numbers: " << sum_neg << '\n';

    return 0;
}