線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:806
推到 Plurk!
推到 Facebook!

一個類似樂透棘手的問題

尚未結案
p84586
一般會員


發表:1
回覆:0
積分:0
註冊:2003-12-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-12-09 02:05:01 IP:61.228.xxx.xxx 未訂閱
樂透號碼42個數字1~42 我要取出15個數字,而每個數字都不能相同 一次要取出150組 而產生每組都不能相同 寫了半天 就是跑不出來 有高手可以幫忙解題的嗎??
azurecloud
中階會員


發表:52
回覆:108
積分:92
註冊:2003-09-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-12-09 04:37:14 IP:163.13.xxx.xxx 未訂閱
Hi, p84586 您好:     我用 Delphi 寫開「一次」獎的程序如下:    procedure TForm1.Button1Click(Sender: TObject); var Num : array[0..41] of integer;     i,j,k,l : integer; begin     // 初始化指標陣列     for i := 0 to 41 do Num[i] := 0;        // 初始化亂數     Randomize;     for j := 1 to 6 do   // 搖獎六次囉!       begin            k := 0;               // 確保同一次開獎中,號碼不重複            repeat               k := Random(41)+1; // 這裡會得到 1 to 42 的整數            until (Num[k]<>1);               Num[k] := 1;               Case j of              1: Panel1.Caption := inttostr(k);              2: Panel2.Caption := inttostr(k);              3: Panel3.Caption := inttostr(k);              4: Panel4.Caption := inttostr(k);              5: Panel5.Caption := inttostr(k);              6: Panel6.Caption := inttostr(k);            end;       end;    end;     執行畫面如下,您可以參考我的做法自行修改成 C 的版本,希望幫的上忙 ========================
我要努力向上~~[/h5] ========================
azurecloud
中階會員


發表:52
回覆:108
積分:92
註冊:2003-09-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-12-09 04:50:35 IP:163.13.xxx.xxx 未訂閱
對了,請在站上搜尋「樂透」兩字,站上還有一堆可參考,請別忘 了下次發言前先搜尋一下喔!(我也忘了先搜尋,做了白工… >_<) 還有,若要 150 組都不相同…,有必要嗎?基本上一組若有 15 個 號碼,要全部相同的機率是非常非常低的… 真的要的話,或許可另外建一個 150 * 15 的陣列,將先前選出的號 碼存入,後面搖出來的號碼先一個一個比對過後,沒有重複才存入。    ========================
我要努力向上~~[/h5] ========================
Royce520
高階會員


發表:18
回覆:157
積分:100
註冊:2002-09-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-12-09 04:56:46 IP:61.230.xxx.xxx 未訂閱
p84586 and azurecloud 你好,   只開一次獎的寫法, 在c++裏 使用 stl的話,   可以很簡單喔...    unsigned number[42]; for (int n=0; n<42; n) number[n] = 1 n; random_shuffle(number 0, number 42); 取出 number[0] ... number[6] 這六個數值 就是開「一次」獎的程序了 至於, 要開150組不一樣的, 發揮一下創意吧 *真實的事物最美, 簡單的道理最好, 我能體會的 太少*
------
不要忘記呼吸,不要忘記編程! ∩__∩
azurecloud
中階會員


發表:52
回覆:108
積分:92
註冊:2003-09-04

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-12-09 06:39:29 IP:163.13.xxx.xxx 未訂閱
感謝 Royce520 大大,小弟受教了,C++ 的函式還真是簡潔啊! 小弟看不太懂 random_shuffle(number+0, number+42); 這一句 猜想是將 number 陣列做亂數排列,只不知是真的對其內容值做 移動,或是做了索引?還有,一開始已用迴圈給定了 number 陣 列值為 1~42 了,那這兒 number+0, number+42 是何解呢? 所以可否請您指導 random_shuffle() 函數的輸入輸出為何?感謝。    ========================
我要努力向上~~[/h5] ========================
系統時間:2024-05-18 20:27:52
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!