C语言随机数的生成---入门篇
一.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. 打印輸出中獎信息
接下來我會繼續(xù)補充相關(guān)知識~~剛剛開始!!!
總結(jié)
以上是生活随笔為你收集整理的C语言随机数的生成---入门篇的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dlib实现人脸检测方法
- 下一篇: 江苏大学885程序设计