寫程式常會用到亂數,有一種常用來產生虛擬亂數的方法是套用下列公式:
符號是模數運算子。
用這種方式產生出來的亂數會介於0到MOD-1之間。此亂數產生器的缺點是它可能以一定的規律重覆產生相同的一組亂數,為了解決這個問題,我們可以小心地選擇SETP與MOD值來產生其值介於0到MOD-1之間均勻分佈(uniform distribution)的亂數。
例如當SETP=3 且 MOD=5 時,所產生的虛擬亂數為 0, 3, 1, 4, 2,並且會重覆此一循環。由這個例子觀察到所有介於0到MOD-1的數值皆會在MOD次迭代內一一產生出來。注意,此亂數產生器的性質是相同的亂數種子seed(x)所產生出來的下一個亂數seed(x+1)是固定的,這表示如果一個亂數產生器會產生出所有介於0到MOD-1的數值,則它每MOD次迭代所產生的虛擬亂數將會呈現均勻分佈(uniform distribution)。
若令SETP=15, MOD=20,亂數產生器會重覆產生亂數 0, 15, 10, 5 (此為初始亂數種子為零的情況,若不為零的話,則會產生其他組亂數)。選擇這樣的SETP與MOD值並不洽當,因為沒有一個初始亂數能產生出所有介於0到MOD-1的數值。
你的程式要能決定是否一組特定的SETP, MOD值能產生出均勻分佈的亂數。
Input
每列輸入會有一對整數SETP與MOD ( )。
Output
請在一列的1~10的位置靠右輸出SETP值,在11~20的位置輸出MOD值,並在第25的位置上輸出"Good Choice"或"Bad Choice"。當所選擇的SETP與MOD值能產生出所有介於0到MOD-1的亂數時,請輸出"Good Choice",否則輸出"Bad Choice"。請在每個測試資料的輸出後面再多列印一個空行。
Sample Input
3 5
15 20
63923 99999
Sample Output
3 5 Good Choice
15 20 Bad Choice
63923 99999 Good Choice
15 20
63923 99999
15 20 Bad Choice
63923 99999 Good Choice
Sample Output寫錯了 僅有字首是大寫
回覆刪除"Good Choice" "Bad Choice"