C語言中的rand()函數,我是不怎麼用,不過正好碰上了,我就仔細研究了一下
一:首先,rand()函數在stdlib.h這個頭文件中
二:系統在調用rand()函數之前會自動調用srand()函數,而如果在函數體中未自定義srand()裏面的值的話,默認初始值爲1,如果自定義srand(),則括號裏面不能爲空,必須添加一個argument
三:爲了確保試生成的隨機數儘可能的符合概率上的隨機,引入一個time函數,意爲UNIX時間戳,即1970年1月1日0點0分0秒返回的時間(每次利用for循環返回的時間都不一樣),而time()括號內必須爲0或NULL
下面爲實例,即隨機生成20個0-100之間的隨機數,賦值給數組a,從數組a中取出元素爲奇數的元素,賦值給數組b,然後將數組b按照從小到大的順序賦值給數組c,最後按序輸出三個數組
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(){
int a[20],b[20],c[20];
int j=0,count=0,temp,i;
srand((unsigned)time(0));
for(i=0;i<20;i++){
//srand((unsigned)time(0));
a[i] = rand()%100+1;
}
for(i=0;i<20;i++){
if(a[i]%2!=0){
b[j]=a[i];
count+=1;
j+=1;
}
}
for(i=0;i<j;i++){
c[i]=b[i];
}
for(i=0;i<j-1;i++){
for(int k=0;k<j-1-i;k++){
if(c[k]>c[k+1]){
temp=c[k];
c[k]=c[k+1];
c[k+1]=temp;
}
}
}
for(i=0;i<20;i++)
{
printf("%d ",a[i]);
}
printf("\n");
for(i=0;i<j;i++)
{
printf("%d ",b[i]);
}
printf("\n");
for(i=0;i<j;i++)
{
printf("%d ",c[i]);
}
printf("\n");
printf("%d",count);
return 0;
}