【问题标题】:Function generates random number in array函数在数组中生成随机数
【发布时间】:2018-10-18 00:47:59
【问题描述】:

我正在尝试创建一个为数组创建随机数的函数。 这是我的代码。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#define ROW 22
#define COL 80


void display(int life[ROW][COL]){
    for(int i = 0; i<ROW; i++){
        for(int j=0; j<COL; j++){
            printf("%d",life[i][j]);
        }
        printf("\n");
    }
}
void initialize_board(int life[ROW][COL]){
    for(int i = 0; i< ROW;i++){
        for(int j = 0; j<COL ; j++){
            life[ROW][COL] = rand()%2;
        }
    }
}
int main() {
    srand(getpid());
    printf("PID: %d\n",getpid());
    int life[22][80] = {0};
    initialize_board(life);
    display(life);
    return 0;
}

但是我得到的输出是 0,不是随机分配给 0 或 1。

【问题讨论】:

    标签: c arrays random numbers


    【解决方案1】:

    而不是

    life[ROW][COL] = rand()%2;
    

    使用

    life[i][j] = rand()%2;
    

    在那个循环中。

    就目前而言,您将所有随机值写入到数组末尾后面的同一(无效)内存地址。

    【讨论】:

    • @Akrios 对人更有礼貌,包括你自己。
    • 请放心,我们当中没有一个人以前没有犯过类似的错误。除了那些刚刚开始并且还没有编写任何代码的人;他们将在未来制造它们。 :P
    【解决方案2】:

    [ROW][COL] 是常数,所以你总是在同一个(无效,如 Wintermute 提到的)单元格中写作。所以你必须使用变量ij 亲切的问候

    【讨论】:

      猜你喜欢
      • 2018-01-19
      • 2015-12-20
      • 2021-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      • 2018-09-07
      • 2011-12-28
      相关资源
      最近更新 更多