[1.99]范围内的奇数

Odd random number in range [1..99]

本文关键字:范围内      更新时间:2023-10-16

我想用范围[1..99]内的奇数随机数填充一个数组。

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
const int N = 100;
int a[N];
void print(){
    for (int i=0; i<N; i++) 
        cout << a[i] << " ";
}
int main(){
    srand(time(NULL));
    int number;
    for (int i=0; i<N; i++) {
        number=(rand()%100)+1;
        if (number%2!=0)
            a[i]=number;
    }
    print();
}

当我使用这个代码时,我收到:

0 93 0 0 29 0 0 0 0 0 27 29日51 13 35 0 0 0 0 0 0 0 0 0 0 97 99 73 15 21 79 73 0 0 39 31 0 7 25 41 1 99 0 0 1 0 81 69 73 95 0 0 0 31 41 21 75 97 0 0 0 0 0 0 0 11 33 65 0 69年31日21日0 0 9 63年27 0 13 0 63 27 99 0 0 0 77 0 59 69 99 0 0 0

这有什么不对吗?为什么有那么多"0"?

为什么不可以呢?你只能填写奇数:

    if (number%2!=0)
        a[i]=number;

如果随机数是偶数,则跳过将其添加到数组中。所以…每个0都是偶数

尝试这样做,只有当您实际得到奇数时,它才会增加。

    #include <iostream>
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    using namespace std;
    const int N = 100;
    int a[N];
void print(){
    for (int i=0; i<N; i++) 
        cout << a[i] << " ";
}
    int main(){
        srand(time(NULL));
        int number;
        for (int i=0; i<N; ) {
            number=(rand()%100)+1;
            if (number%2!=0)
          {
                a[i]=number;
            i++;
          }
        }
        print();
    }