C語言中給數組賦隨機值


  srand和rand兩個函數配合可以產生偽隨機數序列。rand函數在產生隨機數前,需要系統提供的生成偽隨機數序列的種子,rand根據這個種子的值產生一系列隨機數。如果系統提供的種子沒有變化,每次調用rand函數生成的偽隨機數序列都是一樣的。srand(unsigned seed)通過參數seed改變系統提供的種子值,從而可以使得每次調用rand函數生成的偽隨機數序列不同,從而實現真正意義上的“隨機”。通常可以利用系統時間來改變系統的種子值,即srand(time(NULL)),可以為rand函數提供不同的種子值,進而產生不同的隨機數序列。

程序1: 

 

 1 #include<stdlib.h>/*用到了srand函數,所以要有這個頭文件*/
 2 #include<stdio.h>
 3 #define MAX 15
 4  
 5 int main()
 6 {
 7     int number[MAX] = {0};
 8     int i;
 9     unsigned int seed;
10     printf("手動輸入隨機數種子:\n");
11     scanf("%d",&seed);/*手動輸入種子*/
12     srand(seed);
13     printf("產生隨機數如下:\n");
14     for(i = 0; i < MAX; i++){
15         number[i] = rand() % 100;/*產生100以內的隨機整數*/
16         printf("%d\t",number[i]);
17     }
18     printf("\n");
19     return 0;
20 }

 

運行結果:

手動輸入隨機數種子:
3
產生隨機數如下:
46    85    68    40    25    40    72    76    1    64    58    24    93    39    2    

 

程序2:

 1 #include<stdlib.h>
 2 #include<stdio.h>
 3 #include<time.h>/*用到了time函數,所以要有這個頭文件*/
 4 #define MAX 15
 5  
 6 int main(void)
 7 {
 8     int number[MAX] = {0};
 9     int i;
10     srand((unsigned)time(NULL));/*播種子*/
11     printf("產生隨機數序列如下:\n");
12     for(i = 0; i < MAX; i++)
13     {
14         number[i] = rand() % 100;/*產生100以內的隨機整數*/
15         printf("%d\t",number[i]);
16     }
17     printf("\n");
18     return 0;
19 }

運行結果:

產生隨機數序列如下:
20    29    49    13    33    96    37    18    84    20    10    28    60    62    86    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM