[問題] 樂透使用自訂方法

看板C_Sharp (C#)作者 (KB)時間13年前 (2012/03/19 19:25), 編輯推噓4(4013)
留言17則, 7人參與, 最新討論串1/1
private void GetRnd(ref int[] vArray, int min, int max, int num) { int max_dim, number, choice; max_dim = max - min; int[] Luckynumber = new int[max_dim + 1]; for (int i = 0; i <= max_dim; i++) { Luckynumber[i] = min + i; } number= max_dim; Random rnd = new Random(); for (int i = 0; i < num; i++) { choice = rnd.Next(number); vArray[i] = Luckynumber[choice]; for (int j = choice; j < number; j++) { Luckynumber[j] = Luckynumber[j + 1]; } number -= 1; } } private void btnStart_Click(object sender, EventArgs e) { int[] pk = new int[6]; GetRnd(ref pk, 1, 43, 6); Array.Sort(pk); //排序 PictureBox[] defPic = new PictureBox[7]; defPic[1] = pic1; defPic[2] = pic2; defPic[3] = pic3; defPic[4] = pic4; defPic[5] = pic5; defPic[6] = pic6; for (int i = 0; i <= pk.GetUpperBound(0); i++) { defPic[i + 1].Image = new Bitmap(Convert.ToString(pk[i]) + ".jpg"); } } 目前還在學習階段 書上這解答有看沒有懂,自訂方法內的整數變數 max_dim ,number, choice,分別是為了拿來存放哪些數值,是否有人能幫我解答 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 27.246.96.23

03/19 21:29, , 1F
感覺這不是單純的樂透耶 樂透不用寫到這麼雜吧ㄎ
03/19 21:29, 1F

03/19 23:12, , 2F
我帶1~7值進去,t[7]是否省略不用
03/19 23:12, 2F

03/19 23:14, , 3F
寫錯 是luckynumber[i]=min+i這行
03/19 23:14, 3F

03/20 00:25, , 4F
個人覺得:max_dim為幾顆球,如大樂透1-49,所以49顆球
03/20 00:25, 4F

03/20 00:31, , 5F
,然後choice就是程式自動幫你選的號碼,然後,num就是
03/20 00:31, 5F

03/20 00:32, , 6F
總共只能挑幾顆球,如大樂透6顆球。
03/20 00:32, 6F

03/20 00:33, , 7F
number只是單純跑亂數,至於為什麼程式碼這麼長,應該
03/20 00:33, 7F

03/20 00:34, , 8F
有圖片顯示了!以上如果有問題,再提出討論,謝謝!
03/20 00:34, 8F

03/20 00:35, , 9F
那LUCKYNUMBER[49]=1+49 不就不使用這個值? 這地方也有疑問
03/20 00:35, 9F

03/20 00:51, , 10F
max_dim = max - min -> 49 - 1 = 48 -> 1 + 48 = 49.
03/20 00:51, 10F

03/20 12:37, , 11F
迴圈太多了
03/20 12:37, 11F

03/20 13:38, , 12F
for (int j = choice; j < number; j++) 這段的用意
03/20 13:38, 12F

03/20 13:39, , 13F
打個比例 如 陣列是 [0]=5 [1]=6 [2]=7 [3]=8 [4]=9
03/20 13:39, 13F

03/20 13:39, , 14F
當rnd 取得 [2]之後 就將 [2]開始的改為
03/20 13:39, 14F

03/20 13:41, , 15F
[0]=5 [1]=6 [2]=8 [3]=9 [4]=9 並將迴圈長度-1 變成0-3
03/20 13:41, 15F

03/20 13:42, , 16F
避免取得重複的值
03/20 13:42, 16F

03/27 13:17, , 17F
shuffle再取值就行了吧?
03/27 13:17, 17F
文章代碼(AID): #1FPnUOv5 (C_Sharp)
文章代碼(AID): #1FPnUOv5 (C_Sharp)