查看: 3331|回復: 27
打印 上一主題 下一主題

[提問] c++亂數問題

  [複製鏈接]
  • TA的每日心情
    開心
    2014-9-28 12:10
  • 簽到天數: 21 天

    [LV.4]偶爾看看III

    34

    主題

    181

    帖子

    776

    積分

    高級會員

    Rank: 4

    積分
    776

    程式設計達人 - 2014新手達陣

    跳轉到指定樓層
    樓主
    發表於 2014-8-27 13:07:44 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

    趕快加入我們來參與討論吧!

    您需要 登錄 才可以下載或查看,沒有帳號?加入我們

    x
    請問各位大大
    要如何讓c++一次產生多個不重複的亂數
    例如
    一次產生4個
    正確 1234
    錯誤 1123

    還有
    隨機產生
    + - * /

    點評

    基本版 http://forum.tfcis.org/thread-475-1-1.html  發表於 2014-8-27 13:37
    林宇翔
    回復

    使用道具 檢舉

  • TA的每日心情
    開心
    2014-11-18 21:47
  • 簽到天數: 9 天

    [LV.3]偶爾看看II

    1

    主題

    40

    帖子

    343

    積分

    好好學生

    Rank: 3Rank: 3

    積分
    343

    程式設計達人 - 2014新手達陣台南一中資訊社

    推薦
    發表於 2014-8-27 14:49:07 | 只看該作者
    林宇翔 發表於 2014-8-27 14:11
    我想做一個
    ?A?B的遊戲
    數字不能重複

    難道是 1A2B ?
    你要不要找 lacy 看看

    點評

    完全符合事實  發表於 2014-8-30 21:17
    太智障 and 涉及人身攻擊  發表於 2014-8-29 13:11
    為什麼到後來沒出啊?  發表於 2014-8-29 13:04
    大家來按反對  發表於 2014-8-27 21:17
    ............  發表於 2014-8-27 20:38
    回復 支持 1 反對 1

    使用道具 檢舉

  • TA的每日心情
    哭哭
    2015-1-6 14:23
  • 簽到天數: 18 天

    [LV.4]偶爾看看III

    7

    主題

    92

    帖子

    152

    積分

    高一新生

    Rank: 2

    積分
    152

    程式設計達人 - 2014新手達陣台南一中資訊社

    推薦
    發表於 2014-8-27 15:17:56 | 只看該作者
    本帖最後由 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)

    點評

    你在說Brad?  發表於 2014-9-2 13:02
    請各位包容一下精神病患  發表於 2014-8-28 00:57
    這到底是一個小遊戲,還是程式競賽的題目? 你這種格式的寫法我還以為是程式競賽的題目,後來發現感覺像是小遊戲  發表於 2014-8-27 21:54
    請使用程式碼標籤  發表於 2014-8-27 21:46
    come on boy  發表於 2014-8-27 15:27
    回復 支持 0 反對 1

    使用道具 檢舉

  • TA的每日心情
    開心
    2014-8-14 16:02
  • 簽到天數: 1 天

    [LV.1]初來乍到

    12

    主題

    138

    帖子

    863

    積分

    高級會員

    Rank: 4

    積分
    863

    台南一中資訊社新手達陣

    頭香
    發表於 2014-8-27 13:32:06 | 只看該作者
    這是你要的嗎?
    [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:44
    沒有srand~~  發表於 2014-8-27 13:34
    回復 支持 反對

    使用道具 檢舉

  • TA的每日心情
    開心
    2014-9-28 12:10
  • 簽到天數: 21 天

    [LV.4]偶爾看看III

    34

    主題

    181

    帖子

    776

    積分

    高級會員

    Rank: 4

    積分
    776

    程式設計達人 - 2014新手達陣

    3#
     樓主| 發表於 2014-8-27 13:33:06 | 只看該作者
    allenwhale 發表於 2014-8-27 13:32
    這是你要的嗎?
    [mw_shl_code=cpp,true]#include
    #include

    "%d %d %d %c %c\n"
    ?

    點評

    這是C語言的輸出,因為printf沒辦法判斷型態是什麼,必須使用%? 來指名說放在這裡的這一個東西的資料型態是什麼,%d指的是int且用10進位輸出%c是char  發表於 2014-8-27 13:36
    林宇翔
    回復 支持 反對

    使用道具 檢舉

  • TA的每日心情
    開心
    2014-9-28 12:10
  • 簽到天數: 21 天

    [LV.4]偶爾看看III

    34

    主題

    181

    帖子

    776

    積分

    高級會員

    Rank: 4

    積分
    776

    程式設計達人 - 2014新手達陣

    4#
     樓主| 發表於 2014-8-27 13:34:07 | 只看該作者
    可以解釋一下嗎
    林宇翔
    回復 支持 反對

    使用道具 檢舉

  • TA的每日心情
    開心
    2014-9-28 12:10
  • 簽到天數: 21 天

    [LV.4]偶爾看看III

    34

    主題

    181

    帖子

    776

    積分

    高級會員

    Rank: 4

    積分
    776

    程式設計達人 - 2014新手達陣

    5#
     樓主| 發表於 2014-8-27 14:11:31 | 只看該作者
    我想做一個
    ?A?B的遊戲
    數字不能重複
    林宇翔
    回復 支持 反對

    使用道具 檢舉

  • TA的每日心情
    慵懶
    2015-4-10 14:18
  • 簽到天數: 78 天

    [LV.6]常住居民II

    176

    主題

    612

    帖子

    3959

    積分

    管理員

    Rank: 9Rank: 9Rank: 9

    積分
    3959

    台南一中資訊社新手達陣程式設計達人 - 2014

    7#
    發表於 2014-8-27 14:56:17 來自手機 | 只看該作者
    http://lfs92002.pixnet.net/blog/post/29002754
    給你參考,我國二時寫的,裡面不少bug慢慢修吧@@
    回復 支持 反對

    使用道具 檢舉

  • TA的每日心情
    開心
    2015-8-22 22:33
  • 簽到天數: 120 天

    [LV.7]常住居民III

    70

    主題

    386

    帖子

    2247

    積分

    金牌會員

    Rank: 6Rank: 6

    積分
    2247

    程式設計達人 - 2014新手達陣

    9#
    發表於 2014-8-27 20:37:52 | 只看該作者
    哈哈~這個好玩
    寫完可以借我試玩ㄇ?
    回復 支持 反對

    使用道具 檢舉

  • TA的每日心情
    開心
    2015-7-8 22:33
  • 簽到天數: 26 天

    [LV.4]偶爾看看III

    27

    主題

    141

    帖子

    397

    積分

    好好學生

    Rank: 3Rank: 3

    積分
    397

    程式設計達人 - 2014新手達陣

    10#
    發表於 2014-8-29 14:06:47 | 只看該作者
    有程式碼嗎?
    (for Sylveon)
    零人桐
    回復 支持 反對

    使用道具 檢舉

    您需要登錄後才可以回帖 登入 | 加入我們

    本版積分規則

    快速回覆 返回頂部 返回列表