最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++實現(xiàn)產(chǎn)生隨機數(shù)和相應(yīng)的猜拳小游戲?qū)嵗a

 更新時間:2018年09月09日 11:15:44   作者:會武術(shù)之白貓  
C++中沒有自帶的random函數(shù),要實現(xiàn)隨機數(shù)的生成就需要使用rand()和srand()。下面這篇文章主要給大家介紹了關(guān)于C++實現(xiàn)產(chǎn)生隨機數(shù)和相應(yīng)的猜拳小游戲的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下

一、簡介

c++中,產(chǎn)生隨機數(shù)的通用方法就是調(diào)用 srand()rand()  函數(shù)。

Rand

單純的rand()會返回一個0至RAND_MAX之間的隨機數(shù)值,而RAND_MAX的值與int位數(shù)有關(guān),最小是32767。不過rand()是一次性的,因為系統(tǒng)默認的隨機數(shù)種子為1,只要隨機數(shù)種子不變,其生成的隨機數(shù)序列就不會改變。

其實,對于rand()的范圍,我們是可以進行人為設(shè)定的,只需要在宏定義中定義一個random(int x)函數(shù),就可以生成范圍為0至x的隨機數(shù)值。當然,也可以定義為random(a,b) ,使其生成范圍為a至b的隨機數(shù)值。具體定義方法在通式部分。

Srand

srand()可用來設(shè)置rand()產(chǎn)生隨機數(shù)時的隨機數(shù)種子。通過設(shè)置不同的種子,我們可以獲取不同的隨機數(shù)序列。可以利用srand((unsigned int)(time(NULL))的方法,利用系統(tǒng)時鐘,產(chǎn)生不同的隨機數(shù)種子。不過要調(diào)用time() ,需要加入頭文件< ctime >

值得注意的是,所有程序中“產(chǎn)生”的隨機數(shù)其實是偽隨機數(shù),本質(zhì)是調(diào)用存儲在計算機里的一組無序數(shù)值序列。

因此在初始化隨機數(shù)種子時,如果初始化相同的種子數(shù)值,得到的“隨機數(shù)”會是一樣的數(shù)值。

#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
 int i;
 srand(1);
 for (i = 0; i < 10; i++)
 {
 cout << rand() << " ";
 }
}

第一次運行的結(jié)果。

第二次運行的結(jié)果,可以看出并不是真正意義上的隨機數(shù)。

但是在運行同一次程序時,可以把這些數(shù)字看成是隨機數(shù)。

二、產(chǎn)生隨機數(shù)

關(guān)鍵是調(diào)用 time 函數(shù)初始化隨機數(shù)種子,達到種子隨變。此時需要調(diào)用 <ctime>頭文件。

#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main()
{
 int i;
 srand((unsigned)time(NULL));
 for (i = 0; i < 10; i++)
 {
 cout << rand() << " ";
 }
 return 0;
}

第一次運行結(jié)果。

第二次運行結(jié)果,可以看成真正意義上的隨機數(shù)。

當需要(0-x)的隨機數(shù)時,只需要在 rand() % x 即可。

當需要(0-1)的小數(shù)隨機數(shù)時,只需要 ( rand() % x ) /x 即可,其中 x 與精度有關(guān),可取 x=100 小數(shù)后兩位。

三、猜拳小游戲

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
 char x;
 int a;
 int b;
 while (1) {
  printf("請選擇你要出的:\n");
  printf("A:剪刀\n");
  printf("B:石頭\n");
  printf("C:布\n");
  printf("D:不玩了\n");

  scanf_s("%c%*c", &x);

  switch (x) {
  case 65 | 97:
   x = 4; break;
  case 66 | 98:
   x = 7; break;
  case 67 | 99:
   x = 10; break;
  case 68 | 100:
   return 0;
  default:
   printf("Error!");
   getchar();
   system("cls");
   return 0;
   break;
  }
  srand((unsigned)time(NULL));
  a = rand() % 3;
  b = (int)x + a;

  printf("電腦出了");
  switch (a) {
  case 0:
   printf("剪刀\n\n"); break;
  case 1:
   printf("石頭\n\n"); break;
  case 2:
   printf("布\n\n"); break;
  }

  printf("你出了");
  switch (x) {
  case 4:
   printf("剪刀\n\n"); break;
  case 7:
   printf("石頭\n\n"); break;
  case 10:
   printf("布\n\n"); break;
  }

  printf("結(jié)果是:\n\n");
  if (b == 6 || b == 7 || b == 11)printf("你贏了!\n\n");
  if (b == 5 || b == 9 || b == 10)printf("電腦贏了!\n\n");
  if (b == 4 || b == 8 || b == 12)printf("平局!\n\n");

  system("pause>nul&&cls");
 }
 return 0;
}

第一次。

第二次。

代碼里x的值是考慮了不重復(fù)問題。

電腦a | 玩家x 4剪刀 7石頭 10布
0剪刀 4 7 10
1石頭 5 8 11
2布 6 9 12

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • c語言實現(xiàn)http下載器的方法

    c語言實現(xiàn)http下載器的方法

    這篇文章主要介紹了c語言實現(xiàn)http下載器的相關(guān)知識,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-07-07
  • Windows注冊表中修改UAC(用戶賬號控制)及批處理腳本

    Windows注冊表中修改UAC(用戶賬號控制)及批處理腳本

    今天小編就為大家分享一篇關(guān)于Windows注冊表中修改UAC(用戶賬號控制)及批處理腳本,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • C++實現(xiàn)圖書館系統(tǒng)

    C++實現(xiàn)圖書館系統(tǒng)

    這篇文章主要為大家詳細介紹了C++實現(xiàn)圖書館系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C++高級數(shù)據(jù)結(jié)構(gòu)之線段樹

    C++高級數(shù)據(jù)結(jié)構(gòu)之線段樹

    這篇文章主要介紹了C++高級數(shù)據(jù)結(jié)構(gòu)之線段樹,文章圍繞主題的相關(guān)資料展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-05-05
  • 解決在Mac下直接解壓C++靜態(tài)庫出現(xiàn)的問題

    解決在Mac下直接解壓C++靜態(tài)庫出現(xiàn)的問題

    最近在研究C++的各種編譯構(gòu)建過程,學(xué)習(xí)了一下cmake,gyp/ninja這些自動化構(gòu)建工具后,想著自己試下用純命令行跑一遍編譯流程。在試圖把C++靜態(tài)庫編譯為動態(tài)庫的過程中遇到了棘手的問題,找了好久后發(fā)現(xiàn)是跟Mac平臺相關(guān)的,這里記錄一下,望對遇到類似問題的童鞋有幫助。
    2016-12-12
  • C語言深入探究自定義類型之結(jié)構(gòu)體與枚舉及聯(lián)合

    C語言深入探究自定義類型之結(jié)構(gòu)體與枚舉及聯(lián)合

    今天我們來學(xué)習(xí)一下自定義類型,自定義類型包括結(jié)構(gòu)體、枚舉、聯(lián)合體,小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考
    2022-05-05
  • MFC實現(xiàn)對話框編輯控件上拖拽文件

    MFC實現(xiàn)對話框編輯控件上拖拽文件

    這篇文章主要為大家詳細介紹了MFC實現(xiàn)對話框編輯控件上拖拽文件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • 詳解QListWidget如何實現(xiàn)自定義Item效果

    詳解QListWidget如何實現(xiàn)自定義Item效果

    這篇文章主要為大家介紹了如何通過QListWidget實現(xiàn)自定義Item效果,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-04-04
  • C語言數(shù)據(jù)結(jié)構(gòu)中定位函數(shù)Index的使用方法

    C語言數(shù)據(jù)結(jié)構(gòu)中定位函數(shù)Index的使用方法

    這篇文章主要介紹了C語言數(shù)據(jù)結(jié)構(gòu)中定位函數(shù)Index的使用方法的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解這部分內(nèi)容,需要的朋友可以參考下
    2017-10-10
  • 深入C中常用的三種排序方法總結(jié)以及探討分析

    深入C中常用的三種排序方法總結(jié)以及探討分析

    本篇文章是對C中常用的三種排序方法總結(jié)以及探討分析的概述,需要的朋友參考下
    2013-05-05

最新評論

麦盖提县| 同德县| 阿勒泰市| 永靖县| 济源市| 孝昌县| 年辖:市辖区| 株洲市| 盐亭县| 鄯善县| 多伦县| 原平市| 榆树市| 贡觉县| 阳西县| 桂东县| 福安市| 曲沃县| 奉化市| 建宁县| 本溪| 恭城| 黔江区| 吴江市| 棋牌| 渭南市| 桂阳县| 郓城县| 阜城县| 和平县| 台东县| 云霄县| 黄龙县| 吉首市| 吴堡县| 友谊县| 西昌市| 衡水市| 永春县| 德保县| 门源|