作者KisB (KB)
看板C_Sharp
標題[問題] 樂透使用自訂方法
時間Mon Mar 19 19:25:10 2012
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
1F:推 qwer820404:感覺這不是單純的樂透耶 樂透不用寫到這麼雜吧ㄎ 03/19 21:29
2F:→ kthree:我帶1~7值進去,t[7]是否省略不用 03/19 23:12
3F:推 kthree:寫錯 是luckynumber[i]=min+i這行 03/19 23:14
4F:推 allenstyle:個人覺得:max_dim為幾顆球,如大樂透1-49,所以49顆球 03/20 00:25
5F:→ allenstyle:,然後choice就是程式自動幫你選的號碼,然後,num就是 03/20 00:31
6F:→ allenstyle:總共只能挑幾顆球,如大樂透6顆球。 03/20 00:32
7F:→ allenstyle:number只是單純跑亂數,至於為什麼程式碼這麼長,應該 03/20 00:33
8F:→ allenstyle:有圖片顯示了!以上如果有問題,再提出討論,謝謝! 03/20 00:34
9F:→ KisB:那LUCKYNUMBER[49]=1+49 不就不使用這個值? 這地方也有疑問 03/20 00:35
10F:→ allenstyle:max_dim = max - min -> 49 - 1 = 48 -> 1 + 48 = 49. 03/20 00:51
11F:→ Abbee:迴圈太多了 03/20 12:37
12F:推 twoseven:for (int j = choice; j < number; j++) 這段的用意 03/20 13:38
13F:→ twoseven:打個比例 如 陣列是 [0]=5 [1]=6 [2]=7 [3]=8 [4]=9 03/20 13:39
14F:→ twoseven:當rnd 取得 [2]之後 就將 [2]開始的改為 03/20 13:39
15F:→ twoseven:[0]=5 [1]=6 [2]=8 [3]=9 [4]=9 並將迴圈長度-1 變成0-3 03/20 13:41
16F:→ twoseven:避免取得重複的值 03/20 13:42
17F:→ RadiationXen:shuffle再取值就行了吧? 03/27 13:17