Re: [問題] 樂透不能重複問題

看板java作者 (聖子到)時間15年前 (2008/12/10 23:36), 編輯推噓2(202)
留言4則, 2人參與, 最新討論串5/9 (看更多)
public class NewClass2 { public static void main(String args[]){ int Max = 46; //亂數的最大值 int[] numbers = new int[Max]; int j=0; for (int i=0 ; i<Max ; i++) { numbers[i]=++j;//陣列初始化 } int n = 6; //你需要的亂數個數 int pick, temp; for(int i=1 ; i<=n ; i++){ pick = (int)(Math.random()*Max);//重點在這裡 //Swapping temp = numbers[pick]; numbers[pick] = numbers[i]; numbers[i] = temp; } //Show出亂數 for(int i=0 ; i<n ; i++) System.out.println(numbers[i]); } } 我小改了幾行 因為原本的程式會出現0 樂透應該是不會出現0吧?? 還有我不懂原本為何有一行要寫 (Max-i)-i 我不懂這行的意義何在? 所以我把他簡掉了 還有我多宣告了變數+來彌補掉會出現0的問題 不知道這樣對不對? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.110.84.96

12/10 23:44, , 1F
上面有打錯字 不是變數+ 是變數j
12/10 23:44, 1F

12/11 03:46, , 2F
你這個版本是錯的喔,因為有可能會出現重複的數字
12/11 03:46, 2F

12/11 03:49, , 3F
喔,上面說錯,你的程式錯在哪裡讓我想想...等下回
12/11 03:49, 3F

12/11 04:05, , 4F
精確的說,你的程式數計出現機率不平均,不信你可以統計看看
12/11 04:05, 4F
文章代碼(AID): #19F-81Mq (java)
討論串 (同標題文章)
文章代碼(AID): #19F-81Mq (java)