參考書: Java程式設計 (Java for Students)
作者: Douglas Bell . Mike Parr
出版社: PEARSON
出版日期: 2007年 7月
題目: 檢查亂數產生器
檢查亂數產生器類別 (第6章) 是否真的能隨機產生數字。請在程式中建立可產生亂數的方法,亂數範圍從 1 至 100。呼叫此方法 100 次,然後將數字出現的頻率儲存在陣列中。最後,再顯示頻率的長條圖。如果亂數產生器可隨機產生數字,長條圖中的每列長條高度應該十分相近。
1.main
(1) 定義一個陣列 array[31]
(2) 隨機產生的數字各自存入其 array
Ex: 3 存到 array[3], 5 存到 array[5]
(3) array[0] 用在找出 1 ~ 30 中出現的最大次數。
(4)再用 array[0] 依序和所有數字做比較,等於者可以產生一個"^"符號,否則產生一個"空白"。
2.main
3.取5個執行結果作分析。
執行結果
(1) "298次"為共同次數
(2) "300次"為共同次數
(3) "299次"為共同次數
(4) "305次" 為共同次數
(5) "298次" 為共同次數
從分布圖也可以約略看出,在任意產生10000個數字中,每個數字共同出現的次數加總可以達9000次左右,接近10000,因此每個數字出現的機率近乎相同。
心得:
這個程式大略呈現,電腦隨機產生數字的機率分布。但畢竟是機率,所以看似均勻的分布中,還是會有可能存在極端分布的情形。
沒有留言:
張貼留言