Re: [問題] 樂透不能重複問題
※ 引述《janyfor (妳哪位ㄚ)》之銘言:
: 先將所有值放到陣列
: 依序選亂數打亂陣列
: 再取前6個值
: 參考參考
janyfor的方法是比較好的
運算複雜度比較低
不過所謂打亂陣列的地方可能要修改一下
以下我提供程式碼
int Max = 46; //亂數的最大值
int[] numbers = new int[Max];
for (int i=0 ; i<Max ; i++) numbers[i]=i;//陣列初始化
int n = 6; //你需要的亂數個數
int pick, temp;
for(int i=0 ; i<n ; i++){
pick = (int)(Math.random()*(Max-i) + i);//重點在這裡
//Swapping
temp = numbers[pick];
numbers[pick] = numbers[i];
numbers[i] = temp;
}
//Show出亂數
for(int i=0 ; i<n ; i++) System.out.println(numbers[i]);
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 69.91.131.148
※ 編輯: ninteen 來自: 69.91.131.148 (12/06 02:23)
推
12/06 23:21, , 1F
12/06 23:21, 1F
推
12/07 00:48, , 2F
12/07 00:48, 2F
推
12/07 01:49, , 3F
12/07 01:49, 3F
推
12/07 02:25, , 4F
12/07 02:25, 4F
推
12/07 04:33, , 5F
12/07 04:33, 5F
推
12/08 00:53, , 6F
12/08 00:53, 6F
推
12/08 10:53, , 7F
12/08 10:53, 7F
推
12/10 13:09, , 8F
12/10 13:09, 8F
→
12/10 13:10, , 9F
12/10 13:10, 9F
推
12/10 13:18, , 10F
12/10 13:18, 10F
推
12/10 13:22, , 11F
12/10 13:22, 11F
推
12/10 17:25, , 12F
12/10 17:25, 12F
推
12/10 17:28, , 13F
12/10 17:28, 13F
推
12/10 20:35, , 14F
12/10 20:35, 14F
→
12/10 20:39, , 15F
12/10 20:39, 15F
推
12/10 22:23, , 16F
12/10 22:23, 16F
推
12/10 23:38, , 17F
12/10 23:38, 17F
→
12/11 04:36, , 18F
12/11 04:36, 18F
討論串 (同標題文章)