Re: [問題] 利用陣列產生樂透號碼並對獎

看板C_and_CPP (C/C++)作者 (human)時間15年前 (2011/05/06 14:15), 編輯推噓0(007)
留言7則, 2人參與, 最新討論串3/3 (看更多)
※ 引述《fv731183 (0.0)》之銘言: : 標題: Re: [問題] 利用陣列產生樂透號碼並對獎 : 時間: Fri May 6 01:59:43 2011 : : ※ 引述《fv731183 (0.0)》之銘言: : : 開發平台(Platform): Dev c++ : : 問題(Question): : : 1.呼叫亂數函數做出投注者陣列 A[32767][6] : : 共32767筆投注 每筆有6個數字(1~42) : : 每個數字不重複 數字由小到大排序 : : 2.呼叫亂數函數做出中獎號碼陣列P[6] : : 從1至42中亂數產生6個不同數字 : : 3.印出投注者中獎情形 : : 投注一筆50元 投注金額一半當彩金 : : 頭獎(6碼全中)--全部彩金的三分之一 : : 二獎(中5碼) --全部彩金的四分之一 : : 三獎(中4碼) --全部彩金的五分之一 : : 四獎(中3碼) --全部彩金的六分之一 : : 若有多人中同一獎 則該比彩金均分: - : : : : 目前進度九成五 : : 可是好像會有重複 可以請大家指點一下嗎 : : 幫重覆時頭獎變好多個 XD~ : : 以下是目前打出來的程式:http://codepad.org/D0js720Z : : (後面印出字開始 某同學幫我壓縮的好擠 請見諒) : : -- : ※ 發信站: 批踢踢實業坊(ptt.cc) : ◆ From: 114.41.67.15 : ※ 編輯: fv731183 來自: 114.41.67.15 (05/06 02:04) : ※ 編輯: fv731183 來自: 114.41.67.15 (05/06 02:13) : → CCWck:邏輯運算子 是&& 05/06 02:17 : → angleevil:可以用srand來減少重複的機會,還有用for檢查每次進來的 05/06 10:59 : → angleevil:值,如果不相同則不塞值,最後檢查有沒有全塞滿. 05/06 11:00 : → fv731183:改成&& 還是會重複 05/06 13:52 : → fv731183:用srand 應該加在哪裡好呢? 05/06 13:52 這是我兩者合一的例子: 你參考看看吧 const int nSize = 42; void CheckVal(int nVal , int *pnArr ,int nIndex) { int nDone = 1; int i = 0; for ( i = 0 ; pnArr[i] != -1 ; ++i) { if (nVal == pnArr[i]) { nDone = 0; break; } } if (nDone == 1) { pnArr[nIndex] = nVal; } else { srand(time(NULL) + nIndex); pnArr[nIndex] = rand() % 42; } } int main() { int nArr[nSize]; int i = 0; memset(nArr,-1,sizeof(nArr)); for ( i = 0 ; i < nSize ; ++i) { CheckVal(rand() % nSize ,nArr,i); } for ( i = 0 ; i < nSize ; ++i) { printf("%d ",nArr[i]); } printf("\n"); return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.220.204.217

05/06 18:42, , 1F
看到別人PO就有想寫一個的衝動XD
05/06 18:42, 1F

05/06 18:42, , 2F

05/07 00:47, , 3F
忘了處理long long XD http://codepad.org/Eg7lckwh
05/07 00:47, 3F

05/09 09:18, , 4F
看了一下,感覺是用隨機洗牌的方法去達到亂數的目的
05/09 09:18, 4F

05/09 09:19, , 5F
其實我這個做法,並不能真正消除重複,即使我發現重複的
05/09 09:19, 5F

05/09 09:19, , 6F
值,給予新的值,其實還是有重複的可能.
05/09 09:19, 6F

05/09 18:42, , 7F
恩 我也省略了排序 不過沒有比較快就是了...
05/09 18:42, 7F
文章代碼(AID): #1Dmv8VdI (C_and_CPP)
文章代碼(AID): #1Dmv8VdI (C_and_CPP)