2008年1月10日 星期四

Testing Random Generator

參考書: 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,因此每個數字出現的機率近乎相同。

心得:
這個程式大略呈現,電腦隨機產生數字的機率分布。但畢竟是機率,所以看似均勻的分布中,還是會有可能存在極端分布的情形。

沒有留言: