国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

利用隨機(jī)數(shù)生成猜數(shù)字游戲【C語(yǔ)言】

這篇具有很好參考價(jià)值的文章主要介紹了利用隨機(jī)數(shù)生成猜數(shù)字游戲【C語(yǔ)言】。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

游戲要求

  1. 自動(dòng)生成隨機(jī)數(shù)的范圍:0-99
  2. 玩家猜數(shù)字,猜數(shù)字的過程中,根據(jù)猜測(cè)數(shù)據(jù)的大小給出大了或小了的反饋,直到猜對(duì),游戲結(jié)束

生成隨機(jī)數(shù)

根據(jù)游戲要求,第一步就是先生成隨機(jī)數(shù),這里我們主要利用到三種函數(shù) rand 、 srand 、 time 函數(shù)。所以下面依次介紹這三種函數(shù)。

rand 函數(shù)

int rand (void);

//rand 函數(shù)的使用需要包含一個(gè)頭文件:stdlib.h

我們來(lái)看一段代碼:

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

運(yùn)行結(jié)果
利用隨機(jī)數(shù)生成猜數(shù)字游戲【C語(yǔ)言】,C語(yǔ)言學(xué)習(xí)記錄,c語(yǔ)言
分析:

  • rand 函數(shù)可以用來(lái)生成一個(gè)隨機(jī)數(shù),可惜是偽隨機(jī)數(shù),范圍是在 0 ~ RAND_MAX 之間,RAND_MAX 大小依賴編譯器實(shí)現(xiàn),但大部分編譯器是 32767。
  • 第一次生成5個(gè)相對(duì)隨機(jī)的數(shù),但是第二次運(yùn)行程序生成的結(jié)果和第一次一模一樣!
    • rand函數(shù)生成的隨機(jī)數(shù)是偽隨機(jī)的。
    • 偽隨機(jī)數(shù)不是真正的隨機(jī)數(shù),是通過某種算法生成的隨機(jī)數(shù)。
    • 真正的隨機(jī)數(shù)是無(wú)法預(yù)測(cè)下一個(gè)值是多少的。
  • rand 函數(shù)是對(duì)一個(gè)叫”種子“的基準(zhǔn)值進(jìn)行運(yùn)算生成的隨機(jī)數(shù)。
  • rand 函數(shù)生成隨機(jī)數(shù)的默認(rèn)種子是 1

那么怎么樣才能讓每一次運(yùn)行的結(jié)果不一樣呢?即每一次運(yùn)行都產(chǎn)生不同的隨機(jī)數(shù)。這是注意到上述代碼中 rand 函數(shù)的種子沒有變化,若讓種子變化,那么每次是否就生成不同的隨機(jī)數(shù)了?

srand 函數(shù)

void srand (unsigned int seed); 
  • 怎么樣讓種子發(fā)生變化呢?在調(diào)用 rand 函數(shù)之前先調(diào)用 srand 函數(shù)試試。
  • 在C語(yǔ)言中,可通過 srand 函數(shù)的參數(shù) seed 來(lái)設(shè)置 rand 函數(shù)生成隨機(jī)數(shù)的時(shí)候的種子,當(dāng)種子發(fā)生變化,每次生成的隨機(jī)數(shù)序列也就變化起來(lái)了。
  • srand 函數(shù)是不需要頻繁調(diào)用的,一次運(yùn)行的程序中調(diào)用一次就夠了。
  • 那我們?cè)趺礃硬拍軐?shí)現(xiàn)種子的變化呢?
    • 時(shí)間!時(shí)間是一直在變化的,如果種子設(shè)置成與時(shí)間相關(guān),那不就實(shí)現(xiàn)了變化的種子了?

time 函數(shù)

time_t time (time_t* timer);

//	time 函數(shù)使用的時(shí)候需要包含頭文件:time.h。

//如果只是讓 `time` 函數(shù)返回時(shí)間戳,可以這樣寫
 time (NULL);	//調(diào)用 time 函數(shù)返回時(shí)間戳,這里沒有接收返回值
  • time 函數(shù)會(huì)返回當(dāng)前的日歷時(shí)間,其實(shí)返回的是1970年1月1日0時(shí)0分0秒到現(xiàn)在程序運(yùn)行時(shí)間之間的差值,單位是秒。
    • 返回的類型是 time_t 類型的,time_t 類型本質(zhì)上其實(shí)就是32位或者64位的整型類型。
  • time 函數(shù)的參數(shù) timer
    • 如果是 非NULL 的指針的話,函數(shù)也會(huì)將這個(gè)返回的差值放在 timer 指向的內(nèi)存中帶回去。
    • 如果是 NULL,就只返回這個(gè)時(shí)間的差值
      - time 函數(shù)返回的這個(gè)時(shí)間差也被叫做:時(shí)間戳。

對(duì)上文代碼進(jìn)行優(yōu)化

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
    srand((unsigned int) time (NULL));	
    printf("%d\n", rand());
    printf("%d\n", rand());
    printf("%d\n", rand());
    printf("%d\n", rand());
    printf("%d\n", rand());
    return 0;
}

運(yùn)行結(jié)果
利用隨機(jī)數(shù)生成猜數(shù)字游戲【C語(yǔ)言】,C語(yǔ)言學(xué)習(xí)記錄,c語(yǔ)言

  • 對(duì)上述代碼運(yùn)行四次,我們可發(fā)現(xiàn)每一次的結(jié)果均不相同。這就是因?yàn)槲覀兠恳淮芜\(yùn)行代碼時(shí),產(chǎn)生隨機(jī)數(shù)的種子發(fā)生變化了。
  • 這樣,對(duì)隨機(jī)數(shù)游戲?qū)崿F(xiàn)的第一步“生成隨機(jī)數(shù)“就完成了。

確定生成隨機(jī)數(shù)的范圍

  • 經(jīng)上述討論,我們可以發(fā)現(xiàn),隨機(jī)數(shù)生成后,隨機(jī)數(shù)的數(shù)值有的很小,有的很大,完全超出了我們要求的“產(chǎn)生 0-99 以內(nèi)的隨機(jī)數(shù)”。那么如何設(shè)置生成的隨機(jī)數(shù)的范圍呢?
  • 求模操作?。。?/li>

如果要生成 0~99 之間的隨機(jī)數(shù),方法如下:

    rand() % 100; //余數(shù)的范圍是0~99

猜數(shù)字游戲?qū)崿F(xiàn)

既然隨機(jī)數(shù)及其范圍確定了,那么隨機(jī)數(shù)生成的邏輯呢?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-688035.html

  • 進(jìn)入游戲
  • 生成隨機(jī)數(shù)
  • 玩家輸入一個(gè)猜測(cè)的數(shù)值
  • 判斷
    • 如果與生成的隨機(jī)數(shù)一樣,則玩家勝利
    • 如果不一致,判斷與生成的隨機(jī)數(shù)的大小,輸出比較的結(jié)果
    • 玩家再次輸入猜測(cè)的數(shù)值
      • 再次重復(fù)判斷
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void game()	
{
    int r = rand()%100;	
    int guess = 0;
    while(1)
    {
        printf("請(qǐng)猜數(shù)字:>>>");
        scanf("%d", &guess);
        if (guess < r)
        {
            printf("猜小了\n");
        }
        else if(guess > r)
        {
            printf("猜大了\n");            
        }
        else
        {
            printf("恭喜你,猜對(duì)了\n");            
        }
    }    
}

void menu()
{
	printf("**************************************\n");
    printf("**********歡迎來(lái)到猜數(shù)字游戲**********\n");
    printf("**************************************\n");
    printf("**********輸入 1 --> 進(jìn)入游戲*********\n");
    printf("**************************************\n");
    printf("**********輸入 2 --> 退出游戲*********\n");
    printf("**************************************\n");
    printf("**************************************\n");
}

int main()
{
    int input = 0;
    srand((unsigned int) time(NULL));
    do
    {
        menu ();
        printf("請(qǐng)選擇:>>>");
        scanf("%d", &input);
        switch(input)
        {
            case 1:
                game();
                break;
            case 0:
                printf("游戲結(jié)束\n");
                break;
            default:
                printf("選擇錯(cuò)誤,請(qǐng)重新選擇\n");
                break;                
        }
    }while(input);    
    return 0;
}

到了這里,關(guān)于利用隨機(jī)數(shù)生成猜數(shù)字游戲【C語(yǔ)言】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • C語(yǔ)言生成隨機(jī)數(shù)【簡(jiǎn)易抽卡代碼為例】

    C語(yǔ)言生成隨機(jī)數(shù)【簡(jiǎn)易抽卡代碼為例】

    本文將詳細(xì)解釋如何在C語(yǔ)言中生成隨機(jī)數(shù),并介紹應(yīng)用的小技巧 c語(yǔ)言生成一個(gè)真正的隨機(jī)數(shù)需要用到三個(gè)函數(shù): rand()、srand()和time()。 函數(shù)介紹 頭文件 : #includestdlib.h 函數(shù)聲明 : int rand(void) 作用 ; 生成一個(gè)偽隨機(jī)數(shù)序列,隨機(jī)數(shù)取值范圍是0~RAND_MAX PS - RAND_MAX其實(shí)是一個(gè)宏

    2024年02月04日
    瀏覽(22)
  • C語(yǔ)言隨機(jī)數(shù)生成和范圍設(shè)置詳解【超詳細(xì)教程】

    C語(yǔ)言隨機(jī)數(shù)生成和范圍設(shè)置詳解【超詳細(xì)教程】

    本文詳細(xì)介紹了C語(yǔ)言中如何使用rand函數(shù)生成隨機(jī)數(shù)以及利用srand函數(shù)設(shè)置隨機(jī)數(shù)的種子,同時(shí)解釋了如何控制隨機(jī)數(shù)的范圍。適合初學(xué)者學(xué)習(xí)和實(shí)踐。

    2024年02月05日
    瀏覽(29)
  • C語(yǔ)言中隨機(jī)數(shù)的生成(rand函數(shù)和srand函數(shù))

    C語(yǔ)言中隨機(jī)數(shù)的生成(rand函數(shù)和srand函數(shù))

    CSDN話題挑戰(zhàn)賽第2期 參賽話題:學(xué)習(xí)筆記 學(xué)習(xí)之路,長(zhǎng)路漫漫,寫學(xué)習(xí)筆記的過程就是把知識(shí)講給自己聽的過程。這個(gè)過程中,我們?nèi)ビ涗浰伎嫉倪^程,便于日后復(fù)習(xí),梳理自己的思路。學(xué)習(xí)之樂,獨(dú)樂樂,不如眾樂樂,把知識(shí)講給更多的人聽,何樂而不為呢? 目錄 一.rand函

    2024年02月04日
    瀏覽(20)
  • R語(yǔ)言【base】——.Random.seed(),RNGkind(),RNGversion(),set.seed():隨機(jī)數(shù)生成器

    Package? base ?version 4.2.0 .Random.seed是一個(gè)整數(shù)向量,包含R中生成隨機(jī)數(shù)的隨機(jī)數(shù)生成器(RNG)狀態(tài)。它可以保存和恢復(fù),但不應(yīng)該被用戶更改。 RNGkind是一個(gè)更友好的接口,用于查詢或設(shè)置正在使用的RNG類型。 RNGversion在早期的R版本中可以用來(lái)設(shè)置隨機(jī)生成器(為了再現(xiàn)性)。 set

    2024年02月22日
    瀏覽(22)
  • Unity 中的隨機(jī)數(shù)的基礎(chǔ)常用的隨機(jī)數(shù)生成方法

    在 Unity 中,可以使用 Random 類來(lái)生成隨機(jī)數(shù)。以下是一些常用的隨機(jī)數(shù)生成方法: Random.Range(min, max):生成一個(gè)在[min, max)范圍內(nèi)的隨機(jī)整數(shù)。 Random.value:生成一個(gè)在[0, 1)范圍內(nèi)的隨機(jī)浮點(diǎn)數(shù)。 Random.insideUnitCircle:生成一個(gè)在單位圓內(nèi)的隨機(jī)二維向量。 Random.insideUnitSphere:生成

    2024年02月20日
    瀏覽(43)
  • JS - 生成隨機(jī)數(shù)的方法匯總(不同范圍、類型的隨機(jī)數(shù))

    (1)使用 random() 方法可以返回一個(gè)介于 0 ~ 1 之間的偽隨機(jī)數(shù)(包括 0,不包括 1)。 (2)下面是一個(gè)測(cè)試樣例 (1)這種最簡(jiǎn)單,因?yàn)楹?random 的特點(diǎn)保持一致。只需使用如下公式即可: (2)比如下面生成 [10,15) 范圍內(nèi)的隨機(jī)浮點(diǎn)數(shù)。 因?yàn)?random 的特點(diǎn),要取得這幾個(gè)區(qū)間

    2023年04月08日
    瀏覽(28)
  • C語(yǔ)言/C++隨機(jī)數(shù)生成,程序運(yùn)行時(shí)間計(jì)時(shí)器(含高精度計(jì)時(shí)器),包括Windows環(huán)境與Linux環(huán)境

    C語(yǔ)言/C++隨機(jī)數(shù)生成,程序運(yùn)行時(shí)間計(jì)時(shí)器(含高精度計(jì)時(shí)器),包括Windows環(huán)境與Linux環(huán)境

    ? ??【數(shù)據(jù)結(jié)構(gòu)與算法】專題正在持續(xù)更新中,各種數(shù)據(jù)結(jié)構(gòu)的創(chuàng)建原理與運(yùn)用?,經(jīng)典算法的解析?都在這兒,歡迎大家前往訂閱本專題,獲取更多詳細(xì)信息哦?????? ??本系列專欄 - ?數(shù)據(jù)結(jié)構(gòu)與算法_勾欄聽曲_0 ??歡迎大家 ??? ?點(diǎn)贊?? ?評(píng)論?? ?收藏?? ??個(gè)人

    2023年04月26日
    瀏覽(20)
  • java生成隨機(jī)數(shù)

    java生成隨機(jī)數(shù)

    ?? bound 必須是正數(shù)。 以下代碼生成的是 0 到 30 的隨機(jī)數(shù)。 生成區(qū)間的隨機(jī)數(shù):[最小值,最大值] 學(xué)的不是技術(shù),更是夢(mèng)想?。。?/p>

    2024年02月07日
    瀏覽(37)
  • 生成隨機(jī)數(shù)

    用于產(chǎn)生隨機(jī)數(shù) boolean nextBoolean() : 返回下一個(gè)偽隨機(jī)數(shù),它是取自此隨機(jī)數(shù)生成器序列的均勻分布的 boolean 值。 void nextBytes(byte[] bytes) : 生成隨機(jī)字節(jié)并將其置于用戶提供的 byte 數(shù)組中。 double nextDouble() : 返回下一個(gè)偽隨機(jī)數(shù),它是取自此隨機(jī)數(shù)生成器序列的、在 0.0 和 1.0 之

    2024年02月03日
    瀏覽(30)
  • Flutter 生成隨機(jī)數(shù)

    如何讓隨機(jī)數(shù)變化? 我們嘗試過的都知道,當(dāng)你創(chuàng)建出來(lái)一個(gè)隨機(jī)數(shù)后,調(diào)用他他的值是隨機(jī)的,但是,這時(shí)候他的值就會(huì)固定住,不管怎么樣都是隨機(jī)出來(lái)的那個(gè)數(shù),如果想要他每次都不一樣的話,我們就想要使用刷新來(lái)讓他變化了。 我們可以使用這樣的方法來(lái)使他每次不一

    2024年02月13日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包