日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言随机数的生成---入门篇

發(fā)布時間:2024/3/24 编程问答 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言随机数的生成---入门篇 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一.rand函數(shù)和srand函數(shù)

在c語言中比較常用的隨機函數(shù)就是rand函數(shù),它可以隨機的產(chǎn)生0~rand_max的隨機數(shù),定義類型不同,最大值也不同,rand函數(shù)包含在頭文件stdlib.h中。

#include <stdio.h> #include <stdlib.h> int main() {int a=rand();printf("%d",a);return 0; }

你會發(fā)現(xiàn)每次產(chǎn)生的隨機數(shù)都是相同的,因為rand函數(shù)產(chǎn)生的隨機數(shù)是偽隨機數(shù),是根據(jù)一個數(shù)按照某個公式推算出來的,這個數(shù)我們稱之為“種子”,但是這個種子在系統(tǒng)啟動后就是一個定值。

要想每次產(chǎn)生的隨機數(shù)不一樣,那么,我們就要用到srand函數(shù)。

如何產(chǎn)生隨機數(shù)

#include <stdio.h> #include <stdlib.h> #include <time.h>int main(int argc, const char *argv[]) { // long t = time(NULL);//因為時間是不斷變化,每次運行程序,時間變化了,隨機的種子就變化了,序列就變化了 // srand(t);srand(time(NULL)); //初始化隨機種子是while(1){int num = rand();//如果直接調(diào)用rand函數(shù),得到的是偽隨機數(shù)printf("num is %d\n",num % 35 + 1);sleep(1);}return 0; }

經(jīng)典例題!!

1.隨機生成一個1 - 10的數(shù),讓對方猜5次,如果猜對了,提示"congratulations !!"? 如果猜錯了,提示"bigger" 或 "smaller"

#include <stdio.h> #include <stdlib.h> #include <time.h>int main(int argc, const char *argv[]) {//1.要想生成隨機數(shù),必須先初始化隨機種子srand(time(NULL));//生成一個隨機數(shù),給別人猜int num = rand() % 10 + 1;int a,i;//用來保存輸入猜的數(shù)for(i = 0; i < 5; i++){scanf("%d",&a);if(a == num){printf("恭喜你,猜對了!!\n");break;}else if(a > num){printf("大了!!\n");}else // a < num {printf("小了!!\n");}}return 0; }

2.中國福利彩票35選7
?? ?
?? ??? ?隨機生成1-35內(nèi)不重復(fù)的7個數(shù)字
?? ??? ?然后讓用戶選擇自己的一組號碼
?? ??? ?中獎規(guī)則:猜中
?? ??? ?
?? ??? ?7個500萬
?? ??? ?6個100萬
?? ??? ?5個1萬
?? ??? ?4個5000
?? ??? ?3個500
?? ??? ?0,1,2個沒中獎
?? ??? ?
?? ?//1. 生成7個中獎號碼 int lotteryNum[7]//注意生成7個中獎號碼,有可能重復(fù), 中獎號檢測去重
?? ?//2. 輸入7個數(shù),買彩票 int myMum[7]; //手動輸入7個數(shù)
?? ?//3. 統(tǒng)計中獎個數(shù)?
?? ?//4. 打印輸出中獎信息

#include <stdio.h> #include <stdlib.h> #include <time.h>int main(int argc, const char *argv[]) {int i,j;int lotteryNum[7];//保存7個中獎號碼int myNum[7];//保存購買的7個中獎號碼int count = 0;//用來統(tǒng)計中獎號碼的個數(shù)srand(time(NULL));//初始化隨機種子//1.生成7個隨機的中獎號碼for(i = 0; i < 7; i++){lotteryNum[i] = rand() % 35 + 1;for(j = 0; j < i; j++)//j代表,用當(dāng)前剛生成的lotteryNum[i]與前面的已經(jīng)生成的每一個號碼做比計{if(lotteryNum[i] == lotteryNum[j])//lotteryNum[i]代表的剛生成的號碼{// printf("出現(xiàn)一次重復(fù)號碼!!\n");i--; //i-- 上面的再i++,i的值不變,重新在該位置生成一個隨機數(shù)break;}}}//2.輸入7個數(shù),購買彩票for(i = 0; i < 7; i++)scanf("%d",&myNum[i]);//3.統(tǒng)計中獎個數(shù)for(i = 0; i < 7; i++){for(j = 0; j < 7; j++){if(lotteryNum[i] == myNum[j]){count++;}}}//4.根據(jù)中獎個數(shù)兌獎printf("count is %d\n",count);switch(count){case 7:printf("500W!!\n");break;case 6:printf("100W!!\n");break;case 5:printf("10W!!\n");break;case 4:printf("5000!!\n");break;case 3:printf("500!!\n");break;default:printf("重在參與!!\n");}//調(diào)試程序printf("中獎號碼:");for(i = 0; i < 7; i++)printf("%d ", lotteryNum[i]);printf("\n");printf("購買號碼:");for(i = 0; i < 7; i++)printf("%d ", myNum[i]);printf("\n");printf("中獎個數(shù)%d個!!\n",count);return 0; }

接下來我會繼續(xù)補充相關(guān)知識~~剛剛開始!!!

總結(jié)

以上是生活随笔為你收集整理的C语言随机数的生成---入门篇的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。