Board logo

標題: 亂數的使用-與應用 [打印本頁]

作者: buy    時間: 2010-10-23 08:47     標題: 亂數的使用-與應用

需include stdlib.h
數值=rand();

例:
取1-10的亂數 a=(rand()%10)+1;
取1-100的亂數 a=(rand()%100)+1;
取100-1000的亂數 a=(rand()%901)+100;

由上幾例可以歸納出來
要取 a~b 的亂數可以這麼寫:
(rand()%(b-a+1))+a

如果單用 rand 取亂數會發現取多次後會出現相同的亂數
這個時候就可以用其他技巧來幫忙

利用 srand() (定義在 stdlib.h)

用 srand 取亂數需要一個參數作為種子以產生新的亂數序列
而這個參數通常使用目前的時間傳入,這時候就需要用 time() (include <time.h>)
來幫忙。

利用 srand() (定義在 stdlib.h)

用 srand 取亂數需要一個參數作為種子以產生新的亂數序列
而這個參數通常使用目前的時間傳入,這時候就需要用 time() (include <time.h>)
來幫忙。

使用方法
在使用 rand 的前一行加上
srand(time(NULL));

ex:
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>

  4. void main()
  5. {
  6. int a;
  7. srand(time(NULL));
  8. a=(rand()%100)+1;
  9. printf("The Random Number is %d .n", a);
  10. }

  11. 05/10/24 修正 感謝kobe這位朋友
複製代碼

作者: Alen    時間: 2010-10-23 11:05

  1. #include <iostream>
  2. #include <cstdlib>
  3. using namespace std;
  4. int main(void)
  5. {
  6.     while (true){  
  7.     int computer; //電腦出的拳
  8.     int user; //玩家出的拳
  9.     int tryagain;
  10.     srand(time(NULL)); //亂數種子
  11.     computer =1+rand()%((3-1)+1); //亂數種子來決定電腦出什麼
  12.     cout<<"請輸入要出的拳  1 = 剪刀   2 =石頭   3 = 布   4 =  不知道  5 = 隨機"<<endl;
  13.     cin>>user;
  14.     cout<<"您輸入的是:"<<user<<endl;

  15.     if(user== 5)
  16.     user=1+rand()%((3-1)+1); //亂數種子來決定玩家出什麼
  17.     if(computer == user)
  18.     { //平手
  19.    
  20.             switch(computer)
  21.             { //平手三種情況
  22.                   case 1: //剪刀
  23.                          cout<<"您出:剪刀,電腦出:剪刀"<<endl ;
  24.                          cout<<"平手"<<endl;
  25.                          break;
  26.                   case 2: //石頭
  27.                          cout<<"您出:石頭,電腦出:石頭"<<endl ;
  28.                          cout<<"平手"<<endl;
  29.                          break;
  30.                   case 3: //布
  31.                          cout<<"您出:布,電腦出:布"<<endl ;
  32.                          cout<<"平手"<<endl;
  33.                          break;
  34.             }
  35.     }
  36.     if(computer == 1)
  37.     { //電腦出剪刀
  38.              if(user == 2) //玩家出石頭
  39.              {
  40.                      cout<<"您出:石頭,電腦出:剪刀"<<endl;
  41.                      cout<<"您贏了!!"<<endl;
  42.              }
  43.              else if(user == 3) //玩家出布
  44.              {
  45.                   cout<<"您出:布,電腦出:剪刀"<<endl;
  46.                      cout<<"您輸了!!"<<endl;   
  47.              }
  48.     }
  49.     if(computer == 2)
  50.     { //電腦出石頭
  51.              if(user == 3) //玩家出布
  52.              {
  53.                      cout<<"您出:布,電腦出:石頭"<<endl;
  54.                      cout<<"您贏了!!"<<endl;
  55.              }
  56.              else if(user == 1) //玩家出剪刀
  57.              {
  58.                   cout<<"您出:剪刀,電腦出:石頭"<<endl;
  59.                      cout<<"您輸了!!"<<endl;     
  60.              }         
  61.     }
  62.     if(computer == 3)
  63.     { //電腦出布
  64.              if(user == 1) //玩家出剪刀
  65.              {
  66.                      cout<<"您出:剪刀,電腦出:布"<<endl;
  67.                      cout<<"您贏了!!"<<endl;
  68.              }
  69.              else if(user == 2) //玩家出石頭
  70.              {
  71.                      cout<<"您出:石頭,電腦出:布"<<endl;
  72.                      cout<<"您輸了!!"<<endl;      
  73.              }         
  74.     }
  75.                         if(user == 4)
  76.                         {
  77.                         cout<<"你呆啊!會不會出啊!!來真的啦!!"<<endl;
  78.                     
  79.                     }     }
  80.     system("pause");
  81.     return 0;
  82. }
複製代碼
嗶嗶嗶嗶嗶嗶嗶 搖勒搖勒搖勒搖
嗶嗶嗶嗶嗶嗶嗶 搖勒搖勒搖勒搖
嗶嗶嗶嗶嗶嗶嗶 搖勒搖勒搖勒搖
作者: chuangjoy    時間: 2010-10-23 11:08

  1. #include <iostream>
  2. using namespace std;
  3. int main(){
  4.    
  5.     int a;
  6.     int com = rand()%3;
  7.     int user = 0;
  8.     cout << "請輸入(0=剪刀 1=石頭 2=布)" << endl;
  9.     while (cin >> user){
  10.           com = rand()%3;
  11.         if(user == 0){  //user 出剪刀
  12.                 if(com == 0){
  13.                        cout << "你出剪刀 電腦出剪刀 平手" << endl;  //com 出剪刀
  14.                 }else if(com == 1){
  15.                       cout << "你出剪刀 電腦出石頭 你輸了" << endl;  //com 出石頭
  16.                 }else if(com == 2){
  17.                       cout << "你出剪刀 電腦出布 你贏了" << endl;  //com 出布
  18.                 }
  19.         }else if(user == 1){  //user 出石頭
  20.                   if(com == 0){
  21.                            cout << "你出石頭 電腦出剪刀 你贏了" << endl;  //com 出剪刀
  22.                     }else if(com == 1){
  23.                           cout << "你出石頭 電腦出石頭 平手" << endl;  //com 出石頭
  24.                     }else if(com == 2){
  25.                           cout << "你出石頭 電腦出布 你輸了" << endl;  //com 出布
  26.                     }
  27.         }else if(user == 2){  //user 出布
  28.                   if(com == 0){
  29.                            cout << "你出布 電腦出剪刀 你輸了" << endl;  //com 出剪刀
  30.                     }else if(com == 1){
  31.                           cout << "你出布 電腦出石頭 你贏了" << endl;  //com 出石頭
  32.                     }else if(com == 2){
  33.                           cout << "你出布 電腦出布 平手" << endl;  //com 出布
  34.                     }
  35.         }
  36.     }
  37.    
  38. system("pause");
  39. return 0;
  40. }
複製代碼

作者: b1081081    時間: 2010-10-23 11:08

#include <iostream>
#include <cstdlib>
using namespace std;
int main(void){

    srand(time(NULL));
    int c = rand()%3;
    string x[3] = {"剪刀","石頭","布"};
    int user = 0;
   
    cout << "輸入(0=剪刀 1=石頭 2=布)" << endl;
    cin >> user;
   
    if(user == c){
    cout << "您出:" << x[user] << ",電腦出:" << x[c] << endl;        
    cout << "平手!\n";
    }else if(user > c || (user == 0 && c == 2)){
    cout << "您出:" << x[user] << ",電腦出:" << x[c] << endl;        
    cout << "您贏了!\n";
    }else if(user < c || (user == 2 && c == 0)){
    cout << "您出:" << x[user] << ",電腦出:" << x[c] << endl;        
    cout << "您輸了!\n";
    }









system("pause");
return 0;
}
作者: p17johnny    時間: 2010-10-23 11:10

  1. #include <iostream>
  2. #include <cstdlib>
  3. using namespace std;
  4. int main(void)
  5. {
  6.     while (true){  
  7.     int computer;
  8.     int user;
  9.     int tryagain;
  10.     srand(time(NULL));
  11.     computer =1+rand()%((3-1)+1);
  12.     cout<<"請輸入要出的拳  1 = 剪刀   2 =石頭   3 = 布   4 =  不知道  5 = 隨機"<<endl;
  13.     cin>>user;
  14.     cout<<"您輸入的是:"<<user<<endl;

  15.     if(user== 5)
  16.     user=1+rand()%((3-1)+1);
  17.     if(computer == user)
  18.     {
  19.             switch(computer)
  20.             {
  21.                   case 1:  
  22.                          cout<<"您出:剪刀,電腦出:剪刀"<<endl ;
  23.                          cout<<"平手"<<endl;
  24.                          break;
  25.                   case 2:  
  26.                          cout<<"您出:石頭,電腦出:石頭"<<endl ;
  27.                          cout<<"平手"<<endl;
  28.                          break;
  29.                   case 3:
  30.                          cout<<"您出:布,電腦出:布"<<endl ;
  31.                          cout<<"平手"<<endl;
  32.                          break;
  33.                                                           }
  34.                                                                }
  35.                                                                       if(computer == 1)
  36.                                                                       {
  37.                                                                       if(user == 2)
  38.                                                                       {
  39.                                                                       cout<<"您出:石頭,電腦出:剪刀"<<endl;
  40.                                                                       cout<<"您贏了!!"<<endl;
  41.                                                                       }
  42.                                                                       else if(user == 3) /
  43.                                                                       {
  44.                                                                            cout<<"您出:布,電腦出:剪刀"<<endl;
  45.                                                                                    cout<<"您輸了!!"<<endl;   
  46.                                                                                    }
  47.                                                                                    }
  48.                                                                                    if(computer == 2){
  49.                                                                                    if(user == 3){
  50.                                                                                    cout<<"您出:布,電腦出:石頭"<<endl;
  51.                                                                                    cout<<"您贏了!!"<<endl;
  52.                                                                                    }
  53.                                                                                    else if(user == 1){
  54.                                                                                    cout<<"您出:剪刀,電腦出:石頭"<<endl;
  55.                                                                                    cout<<"您輸了!!"<<endl;     
  56.              }         
  57.     }
  58.     if(computer == 3){
  59.              if(user == 1){
  60.                      cout<<"您出:剪刀,電腦出:布"<<endl;
  61.                      cout<<"您贏了!!"<<endl;
  62.              }
  63.              else if(user == 2){
  64.                      cout<<"您出:石頭,電腦出:布"<<endl;
  65.                      cout<<"您輸了!!"<<endl;      
  66.              }         
  67.     }
  68.                         if(user == 4)
  69.                         {
  70.                         cout<<"??您出啥"<<endl;
  71.                     
  72.                     }     }
  73.     system("pause");
  74.     return 0;
  75. }
複製代碼
哎呀壓
作者: buy    時間: 2010-10-23 11:14

大家都寫的很好喔,品詰的方法很棒!明輝加油快點寫出來~
作者: abc3806198    時間: 2010-10-23 11:16

回復 1# buy
  1. #include <iostream>
  2. #include <cstdlib>
  3. using namespace std;
  4. int main(void)
  5. {

  6.     while (true){  
  7.     int com;
  8.     int user;
  9.     int tryagain;
  10.    
  11.     srand(time(NULL));  
  12.     com =1+rand()%((3-1)+1);  
  13.     cout<<"請輸入要出的拳  1 = 剪刀   2 =石頭   3 = 布"<<endl;
  14.     cin>>user;
  15.     cout<<"你是:"<<user<<endl;

  16.      
  17.    
  18.     if(com == user)
  19.     {

  20.             switch(com)

  21.             {
  22.                   case 1:  
  23.                          cout<<"你出:剪刀,電腦出:剪刀"<<endl ;
  24.                          cout<<"平手"<<endl;
  25.                          break;

  26.                   case 2:
  27.                          cout<<"你出:石頭,電腦出:石頭"<<endl ;
  28.                          cout<<"平手"<<endl;
  29.                          break;

  30.                   case 3:  
  31.                          cout<<"你出:布,電腦出:布"<<endl ;
  32.                          cout<<"平手"<<endl;
  33.                          break;
  34.             }
  35.     }

  36.     if(com == 1)
  37.     {

  38.              if(user == 2)

  39.              {
  40.                      cout<<"你出:石頭,電腦出:剪刀"<<endl;
  41.                      cout<<"你贏了!!"<<endl;
  42.              }

  43.              else if(user == 3)  

  44.              {
  45.                   cout<<"你出:布,電腦出:剪刀"<<endl;
  46.                      cout<<"你輸了!!"<<endl;   
  47.              }

  48.     }
  49.     if(com == 2)

  50.     {
  51.              if(user == 3)
  52.              {

  53.                      cout<<"你出:布,電腦出:石頭"<<endl;
  54.                      cout<<"你贏了!!"<<endl;
  55.              }

  56.              else if(user == 1)
  57.              {

  58.                   cout<<"你出:剪刀,電腦出:石頭"<<endl;
  59.                      cout<<"你輸了!!"<<endl;     
  60.              }         

  61.     }

  62.     if(com == 3)

  63.     {  
  64.              if(user == 1)
  65.              {
  66.                      cout<<"你出:剪刀,電腦出:布"<<endl;
  67.                      cout<<"你贏了!!"<<endl;
  68.              }

  69.              else if(user == 2)
  70.              {

  71.                      cout<<"你出:石頭,電腦出:布"<<endl;
  72.                      cout<<"你輸了!!"<<endl;      
  73.              }         

  74.     }

  75.                         
  76.                     
  77.                     }     

  78.     system("pause");

  79.     return 0;

  80. }
複製代碼





歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/) Powered by Discuz! 7.2