竹園論壇

標題: c++亂數問題 [打印本頁]

作者: 林宇翔    時間: 2014-8-27 13:07
標題: c++亂數問題
請問各位大大
要如何讓c++一次產生多個不重複的亂數
例如
一次產生4個
正確 1234
錯誤 1123

還有
隨機產生
+ - * /
作者: allenwhale    時間: 2014-8-27 13:32
這是你要的嗎?
[C++] 純文本查看 復制代碼
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
bool use[15]={false};
int gen1()
{
        int res;
        do
        {
                res=rand()%10;
        }while(use[res]);
        use[res]=true;
        return res;
}
char gen2()
{
        int r=rand()%4;
        if(r==0)return '+';
        else if(r==1)return '-';
        else if(r==2)return '*';
        else return '/';
}
int main()
{
        printf("%d %d %d %c %c\n",gen1(),gen1(),gen1(),gen2(),gen2());
}

作者: 林宇翔    時間: 2014-8-27 13:33
allenwhale 發表於 2014-8-27 13:32
這是你要的嗎?
[mw_shl_code=cpp,true]#include
#include

"%d %d %d %c %c\n"
?
作者: 林宇翔    時間: 2014-8-27 13:34
可以解釋一下嗎
作者: 林宇翔    時間: 2014-8-27 14:11
我想做一個
?A?B的遊戲
數字不能重複
作者: Brad    時間: 2014-8-27 14:49
林宇翔 發表於 2014-8-27 14:11
我想做一個
?A?B的遊戲
數字不能重複

難道是 1A2B ?
你要不要找 lacy 看看
作者: Sylveon    時間: 2014-8-27 14:56
http://lfs92002.pixnet.net/blog/post/29002754
給你參考,我國二時寫的,裡面不少bug慢慢修吧@@
作者: lacy    時間: 2014-8-27 15:17
本帖最後由 domen111 於 2014-8-27 21:45 編輯

[C++] 純文本查看 復制代碼
#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
int main()
{
        srand(time(NULL));
        bool log=true,idiot=false;
        int a=0,d=0,e=0,num=0;
        char b[4],c[5];
        while(a<4)
        {
                b[a]=rand()%10+'0';
                for(int q=0;q<a;q++)
                {
                        if(b[a]==b[q])
                                log=false;
                }
                if(log)
                        a++;
                log=true;
        }
        //cout<<b<<endl;
        while(cin>>c)
        {
                num++;
                                if(num>20)
                          break;
                for(int q=1;q<4;q++)
                {
                        for(int w=0;w<q;w++)
                        {
                                if(c[q]==c[w])
                                {
                                        idiot=1;
                                        break;
                                }
                        }
                        if(idiot)
                                break;
                }
                if(idiot)
                {
                        idiot=0;
                        cout<<"You idiot"<<endl;
                        continue;
                }
                if((c[1]=='\0')||(c[2]=='\0')||(c[3]=='\0')||(c[4]!='\0'))
                {
                        cout<<"You idiot"<<endl;
                        continue;
                }
                for(int q=0;q<4;q++)
                {
                        for(int w=0;w<4;w++)
                        {
                                if(b[q]==c[w])
                                        if(q==w)
                                                d++;
                                        else
                                                e++;
                        }
                }
                if(d==4)
                {
                        cout<<"You win"<<endl;
                        break;
                }
                cout<<d<<" A "<<e<<" B"<<endl;
                d=0;
                e=0;
        }
        return 0;
}





題目: 1A2B
可憐的喬韋小廢物正在玩1A2B的遊戲,然而笨笨的他已經連輸二十次了。你可以設計一個程式幫助喬韋贏得遊戲嗎?
遊戲規則: 電腦會產生四個不重複的數字,而你要猜出這四個數字。每次輸出四個數字,電腦會回傳 幾A幾B (ex: 1A2B)。A 代表數字對且位置不對,而B代表數字對但位置不對。
輸出說明:
四個數字。
注意: 若輸出不到四個或超過四個數字,或是輸出的數字重複,電腦將不會輸入。
另外: 為了避免各位從最小的 0123 一直輸出到最大的 9876,共5040次。因此為了減輕各位的負擔,同時顯示各位的智商高於喬韋小廢物,輸出次數不得超過 20次。
輸入說明:
一個數字,字元’A’, 一個數字,字元’B’,皆以空格隔開。
範例輸出:
6548
範例輸入:
2 A 2 B   (答案: 6845)

作者: Panda_Liu    時間: 2014-8-27 20:37
哈哈~這個好玩
寫完可以借我試玩ㄇ?
作者: 零人桐    時間: 2014-8-29 14:06
有程式碼嗎?
(for Sylveon)
作者: 林宇翔    時間: 2014-8-29 17:56
本帖最後由 林宇翔 於 2014-8-29 17:58 編輯

猜數字遊戲
應該沒BUG吧
測試好幾次了
各位看看

game.rar

276.12 KB, 下載次數: 0

猜數字






歡迎光臨 竹園論壇 (http://forum.tfcis.org/) Powered by Discuz! X3.2