專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

C語(yǔ)言隨機(jī)函數(shù)

作者:劉蕊飛   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2014年03月02日   【字體:

1.srand((unsigned)time(NULL));

 

2.int radio =rand() % 5 + 1;//radio 為隨機(jī) 1~5的整數(shù)

 

 

 

系統(tǒng)隨機(jī)函數(shù),必須包含兩個(gè)頭文件,stdio.h,stdlib.htime.h,。上面兩行代碼必須一起用,第一行是清空隨機(jī)函數(shù)緩存。如果沒(méi)有第一句,則每次得到的隨機(jī)函數(shù)都是一樣的。

 

例如,我們需要一個(gè)5位數(shù)的隨機(jī)數(shù),代碼如下:

 

#include<stdio.h>

 

#include<stdlib.h>

 

#include<time.h>

 

 

 

int main(){

 

       intradio=0;

 

       chara[5]={'\0'};

 

       inti=0;

 

 

 

       srand((unsigned)time(NULL));

 

       radio=rand()%5+1;

 

       for(i=0;i<5;i++)

 

       {

 

              a[i]="qwertyuiop"[rand()%10];

 

              printf("%c\n",a[i]);

 

       }

 

       printf("%d\n",radio);

 

}

 

 

 

一般登錄網(wǎng)站都必須輸入驗(yàn)證碼,驗(yàn)證碼只是隨機(jī)函數(shù)而已,比如說(shuō)我們要得到一個(gè)5位數(shù)的字母數(shù)字組合的驗(yàn)證碼;代碼如下:

 

#include<stdio.h>

 

#include<stdlib.h>

 

#include<time.h>

 

#include<string.h>

 

 

 

int main(){

 

       inti=0;

 

       charstr[10]="\0",str2[10]="\0";

 

      

 

       //驗(yàn)證碼

 

       for(i=0;i<5;i++){

 

              srand((unsigned)time(NULL)+i); 

 

              str[i]="0123456789abcdefghihklmnopqrstuvwxyz"[rand()%36];

 

       }

 

       printf("驗(yàn)證碼:%s",str);

 

       printf("\n");

 

       printf("輸入驗(yàn)證碼:");

 

       fgets(str2,10,stdin);

 

       str2[strlen(str2)-1]='\0';

 

       if(strcmp(str,str2)!=0){

 

              printf("驗(yàn)證碼輸入錯(cuò)誤\n");

 

              return1;

 

       }

 

else

 

       printf("驗(yàn)證碼輸入正確\n");

 

}

 

 

 

str[i]="0123456789abcdefghihklmnopqrstuvwxyz"[rand()%36];

 

這行代碼,雙引號(hào)里面的數(shù)字大小寫(xiě)字母隨便寫(xiě),’%’后面的數(shù)字通常和前面的個(gè)數(shù)對(duì)應(yīng),也可以小于前面的個(gè)數(shù),比如說(shuō)就是n,那這樣只有前n個(gè)字符有效,隨機(jī)字符也會(huì)從前n個(gè)中輸出。
更正:驗(yàn)證碼一般不使用0,o,1,l,2,z,這六個(gè)字符,所以應(yīng)該是 str[i]="3456789abcdefghihkmnpqrstuvwxy"[rand()%30];
多謝老李的提醒,以后多向你學(xué)習(xí)

關(guān)閉窗口

相關(guān)文章