c語言隨機二維數組
㈠ C語言編程,如何自動生成一個二維數組
程序主要通過malloc函數動態生成數組,srand和rand函數配合生成隨機數據,代碼如下,
//程序功能,實現自定義m*n二維數組,隨機生成給定范圍max-min的數組元素
#include<stdio.h>
#include <stdlib.h>
#include <time.h>
void main()
{
int i=0,j=0;
int m=0,n=0;//數組維數
int max=0,min=0;//數組數據范圍
int **p=NULL;//二維指針,存放m*n個元素
int tmp;
printf("請輸入數組維數m和n:");
scanf("%d %d",&m,&n);
printf("請輸入數組元素最大最小值max和min:");
scanf("%d %d",&max,&min);
if(max<min)//保證max大於min
{
tmp=max;
max=min;
min=max;
}
p=(int**)malloc(m*sizeof(int*));//先分配m個一維指針
if(NULL==p)
exit(1);
for (i = 0; i < n ; i++)
{
p[i] = (int*)malloc(n*sizeof(int));//為m個一維指針分配n個整型大小的空間
if (NULL==p[i])
exit(1);
}
srand(time(NULL));
for(i=0;i<m;i++)
for(j=0;j<n;j++)
p[i][j]=rand()%(max-min+1)+min;
printf("%d*%d二維數組為:\n",m,n);
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
printf("%d\t",p[i][j]);
printf("\n");
}
for (i = 0; i < n; i++)
{
free(p[i]);
p[i]=NULL;
}
free(p);
p=NULL;
}
void *malloc( size_t size );如果分配成功則返回指向被分配內存的指針,指針指向一個大小為size的內存空間;如果錯誤發生返回NULL。
一般srand和rand配合使用產生偽隨機數序列。rand函數在產生隨機數前,需要系統提供的生成偽隨機數序列的種子,rand根據這個種子的值產生一系列隨機數。如果系統提供的種子沒有變化,每次調用rand函數生成的偽隨機數序列都是一樣的。srand(unsigned seed)通過參數seed改變系統提供的種子值,從而可以使得每次調用rand函數生成的偽隨機數序列不同,從而實現真正意義上的「隨機」。通常可以利用系統時間來改變系統的種子值,即srand(time(NULL)),可以為rand函數提供不同的種子值,進而產生不同的隨機數序列。