生產隨機的矩陣的關鍵在於使用隨機函式rand()。
rand()
表頭檔案: #include<stdlib.h>
定義函式 :int rand(void)
函式說明 :
因為rand的內部實現是用線性同餘法做的,他不是真的隨機數,只不過是因為其週期特別長,所以有一定的範圍裡可看成是隨機的,rand()會返回一隨機數值,範圍在0至RAND_MAX 間。在呼叫此函式產生隨機數前,必須先利用srand()設好隨機數種子,如果未設隨機數種子,rand()在呼叫時會自動設隨機數種子為1。rand ()產生的是假隨機數字,每次執行時是相同的。若要不同,以不同的值來初始化它.初始化的函式就是srand()。
返回值:
返回0至RAND_MAX之間的隨機整數值,RAND_MAX的範圍最少是在32767之間(int),即雙位元組(16位數)。若用unsigned int 雙位元組是65535,四位元組是4294967295的整數範圍。
0~RAND_MAX每個數字被選中的機率是相同的.
基於隨機函式,使用雙重迴圈語句便可以生成一個隨機矩陣,下面是一個10x10隨機矩陣的程式碼,數值範圍在0~1000:
#include <stdio.h>
#include <stdlib.h>
#define M 10
#define N 10
int main(void)
{
int i = 0, j = 0;
int Arr[M][N] = {{0}};
srand(time(NULL));
for (i = 0; i < M; ++i)
for (j = 0; j < N; ++j)
Arr[i][j] = rand() % 1000;
}
printf("Array[%d][%d] is: \n", M, N);
printf("%d\t", Arr[i][j]);
printf("\n");
return 0;
生產隨機的矩陣的關鍵在於使用隨機函式rand()。
rand()
表頭檔案: #include<stdlib.h>
定義函式 :int rand(void)
函式說明 :
因為rand的內部實現是用線性同餘法做的,他不是真的隨機數,只不過是因為其週期特別長,所以有一定的範圍裡可看成是隨機的,rand()會返回一隨機數值,範圍在0至RAND_MAX 間。在呼叫此函式產生隨機數前,必須先利用srand()設好隨機數種子,如果未設隨機數種子,rand()在呼叫時會自動設隨機數種子為1。rand ()產生的是假隨機數字,每次執行時是相同的。若要不同,以不同的值來初始化它.初始化的函式就是srand()。
返回值:
返回0至RAND_MAX之間的隨機整數值,RAND_MAX的範圍最少是在32767之間(int),即雙位元組(16位數)。若用unsigned int 雙位元組是65535,四位元組是4294967295的整數範圍。
0~RAND_MAX每個數字被選中的機率是相同的.
基於隨機函式,使用雙重迴圈語句便可以生成一個隨機矩陣,下面是一個10x10隨機矩陣的程式碼,數值範圍在0~1000:
#include <stdio.h>
#include <stdlib.h>
#define M 10
#define N 10
int main(void)
{
int i = 0, j = 0;
int Arr[M][N] = {{0}};
srand(time(NULL));
for (i = 0; i < M; ++i)
{
for (j = 0; j < N; ++j)
{
Arr[i][j] = rand() % 1000;
}
}
printf("Array[%d][%d] is: \n", M, N);
for (i = 0; i < M; ++i)
{
for (j = 0; j < N; ++j)
{
printf("%d\t", Arr[i][j]);
}
printf("\n");
}
return 0;
}