Функция генерирует случайное число в массиве - PullRequest
0 голосов
/ 08 мая 2018

Я пытаюсь создать функцию, которая создает случайное число для массива. Вот мой код

#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 или 1.

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

[ROW][COL] постоянны, поэтому вы всегда пишете в одной и той же (недействительной, как упоминалось в Винтермуте) ячейке. Таким образом, вы должны были использовать переменные i и j С уважением

0 голосов
/ 08 мая 2018

вместо

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

использовать

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

внутри этого цикла.

В существующем состоянии вы записываете все случайные значения в один и тот же (недействительный) адрес памяти, немного позади конца массива.

...