欧美三级国产三级日韩三级_亚洲熟妇丰满大屁股熟妇_欧美亚洲成人一区二区三区_国产精品久久久久久模特

猜數(shù)字游戲(偽隨機數(shù)對猜數(shù)字游戲的影響) - 新聞資訊 - 云南小程序開發(fā)|云南軟件開發(fā)|云南網(wǎng)站建設(shè)-昆明葵宇信息科技有限公司

159-8711-8523

云南網(wǎng)建設(shè)/小程序開發(fā)/軟件開發(fā)

知識

不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價值,我們在追求其視覺表現(xiàn)的同時,更側(cè)重于功能的便捷,營銷的便利,運營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!

您當(dāng)前位置>首頁 » 新聞資訊 » 技術(shù)分享 >

猜數(shù)字游戲(偽隨機數(shù)對猜數(shù)字游戲的影響)

發(fā)表時間:2020-10-19

發(fā)布人:葵宇科技

瀏覽次數(shù):102

猜數(shù)字游戲的實現(xiàn) 

由體系隨機產(chǎn)生一個100內(nèi)的數(shù)字,請求用戶猜測這個整數(shù)。輸入一個猜猜想的┞符數(shù),斷定是否與產(chǎn)生的隨機數(shù)相等,由屏幕顯示斷定結(jié)不雅。如不雅猜得紕謬,給出“大年夜了”或“小了”的提示,直到猜出這個數(shù)為止。

猜數(shù)字游戲的邏輯:

1.法度榜樣主動生成一個隨機的1-100的┞符數(shù)。
2.用戶來輸入一個整數(shù)。
3.體系會根據(jù)輸情面況來提示用戶,是猜高了,照樣低了,照樣猜對了。


起首,我們須要一個菜單來實現(xiàn)和用戶的交互:

我們經(jīng)由過程menu()這個函數(shù)來實現(xiàn)和用戶的交互,函數(shù)的返回值為choice的值,輸入1表示開端游戲,輸入0表示退出游戲。

int menu() {
	printf("=============================\n");
	printf(" 1. 開端游戲\n");
	printf(" 0. 退出游戲\n");
	printf("=============================\n");
	printf(" 請輸入您的選擇: ");
	int choice = 0;
	scanf("%d", &choice);
	return choice;
}


其次我們須要來完成這個游戲函數(shù):

猜數(shù)字的邏輯:

1. 法度榜樣主動生成一個 1-100 的隨機整數(shù)。

2. 大年夜控制臺攫取用戶的輸入。

3. 比較用戶輸入的數(shù)字和體系生成的數(shù)字之間的關(guān)系,并給用戶提示。

void game() {
	// 1. 法度榜樣主動生成一個 1-100 的隨機整數(shù). 
	int toGuess = rand() % 100 + 1;
	while (1) {
		// 2. 大年夜控制臺攫取用戶的輸入. 
		printf("請輸入要猜的數(shù)字: ");
		int input = 0;
		scanf("%d", &input);
		// 3. 比較用戶輸入的數(shù)字和體系生成的數(shù)字之間的關(guān)系, 并給用戶提示. 
		if (input < toGuess) {
			printf("低了!\n");
		} else if (input > toGuess) {
			printf("高了!\n");
		} else {
			printf("猜對了!\n");
			break;
		}
	}
}

下面我們在主函數(shù)中調(diào)用他們,實現(xiàn)猜數(shù)字游戲:

int main() {

	while (1) {
		// 調(diào)用菜單函數(shù), 和用戶進行交互
		int choice = menu();
		if (choice == 1) {
			game();
		} else if (choice == 0) {
			printf("法度榜樣退出, 再會!\n");
			break;
		} else {
			// 寫法度榜樣得推敲到用戶的不法輸入的情況.
			printf("您的輸入有誤, 請從新輸入!\n");
		}
	}

	system("pause");
	return 0;
}

到此這個猜數(shù)字游戲已經(jīng)根本實現(xiàn),下面我們來測試一下:

我們可以看到三次進行游戲獲得的結(jié)不雅是:第一次42,第二次68,第三次35。


退出法度榜樣,我們再來玩一次猜數(shù)字:

我們可以看出:獲得的

第一個元素始終是42,第二個元素始終是68,第三個元素始終是35……

由此我們可以知道當(dāng)前的猜數(shù)字游戲照樣存在問題的,這個問題是什么呢?

經(jīng)由多次反復(fù)運行法度榜樣后,獲得的隨機數(shù)序列是固定序列。

為什么會出現(xiàn)這個問題呢?

經(jīng)由過程查閱一些材料懂得到:

計算機弗成能產(chǎn)生真正的隨機數(shù)。在這里,我們應(yīng)用的隨機數(shù)是將隨機數(shù)種子(srand函數(shù)介紹的參數(shù))作為初始前提,經(jīng)由必定的計算產(chǎn)生的。

這么說可能會有一點難以懂得,我們來舉個游戲中的例子:

比如LOL就有一套自力的偽隨機機制,以25%暴擊舉例,如不雅蠻王第一刀沒暴擊,第二刀也沒暴擊,第三刀照樣沒暴擊,那么第四刀暴擊的幾率就會大年夜大年夜的晉升(不是25%),信賴很多玩游戲的同窗都邑有這種領(lǐng)會,這里的暴擊就是一個偽隨機數(shù)。

那么怎么解決這個問題讓偽隨機變成真隨機呢?

膳綾擎我們知道了:隨機數(shù)是將隨機數(shù)種子(srand函數(shù)介紹的參數(shù))作為初始前提,經(jīng)由必定的計算產(chǎn)生的。

隨機數(shù)種子雷同,獲得的隨機數(shù)序列就是雷同的。

隨機數(shù)種子不合,獲得的隨機數(shù)序列就是不合的。

所以,我們只須要設(shè)置不合的隨機數(shù)種子就能解決這個問題,在這里我們應(yīng)用時光(計算機頂用整數(shù)表示時光)作為隨機數(shù)種子.


應(yīng)用srand(time(0))調(diào)劑隨機數(shù)種子。讓我們運行兩次,來看下代碼的運行結(jié)不雅:

第一次

結(jié)不雅是27,66。


第二次

結(jié)不雅是44,85。

可以看出調(diào)劑隨機數(shù)種子后,隨機數(shù)序列就不合了,猜數(shù)字游戲也就實現(xiàn)了。


完全的代碼:

VS2013

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

int menu() {
	printf("=============================\n");
	printf(" 1. 開端游戲\n");
	printf(" 0. 退出游戲\n");
	printf("=============================\n");
	printf(" 請輸入您的選擇: ");
	int choice = 0;
	scanf("%d", &choice);
	return choice;
}
void game() {
	int toGuess = rand() % 100 + 1;
	while (1) {
		printf("請輸入要猜的數(shù)字: ");
		int input = 0;
		scanf("%d", &input);
		if (input < toGuess) {
			printf("低了!\n");
		}
		else if (input > toGuess) {
			printf("高了!\n");
		}
		else {
			printf("猜對了!\n");
			break;
		}
	}
}
int main() {
	srand(time(0)); 
	while (1) {
		int choice = menu();
		if (choice == 1) {
			game();
		}
		else if (choice == 0) {
			printf("法度榜樣退出, 再會!\n");
			break;
		}
		else {
			printf("您的輸入有誤, 請從新輸入!\n");
		}
	}
	system("pause");
	return 0;
}

相關(guān)案例查看更多