我被要求编写一个生成 2d 随机数数组的程序。我的代码产生了奇怪的结果。不管矩阵的大小如何,它都会产生一个“反向对角矩阵”(不知道还能叫什么)。我要理解 rand() 会产生一个介于 0 和 RAND_MAX 之间的伪随机数,但不知何故,结果取决于我的矩阵的大小,我不确定这种行为是如何发生的。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAT_SIZE 5
void main (void)
{
srand(time(0));
unsigned char * ptr = malloc(MAT_SIZE*MAT_SIZE);
unsigned char i, j;
for(i = 0; i < MAT_SIZE; i++)
{
for(j = 0; j < MAT_SIZE ; j ++)
{
*(ptr + i + j ) = rand();
}
}
for(i = 0; i < MAT_SIZE ; i++)
{
for(j = 0; j < MAT_SIZE ; j ++)
{
printf("%5d", *(ptr + i + j));
}
printf("\n");
}
free(ptr);
}
3*3输出
142 141 11
141 11 230
11 230 28
输出5*5
232 157 62 131 245
157 62 131 245 54
62 131 245 54 138
131 245 54 138 246
245 54 138 246 108
即使是伪随机数也不应该根据其使用方式而有所不同。我对强制这些结果的程序有什么不理解吗?