2016-02-10 77 views
0

我最近爲我的計算機科學課提交了一份作業。在它裏面,我使用了Math.random()方法中的Random類,以便生成隨機數。我的講師注意到了這一點,稱這是一種「不必要的複雜情況」,我不應該在絕對需要時避免導入課堂。因爲我對此沒有任何反對意見,並且我接受這是她首選的方法,它確實有它的優點,但是我希望更廣泛的(也許更有經驗的)組的意見 - 自Math.random()以來,無論如何都要調用Random類,並且每次調用方法時(afaik)都會創建一個新的Random對象,切斷中間人是不是有意義?使用隨機類「不必要地複雜」的東西?

感謝

+0

只有誰從未使用過它可能會說這樣 –

+0

一個人對你正在嘗試做的依賴。什麼是實際任務? –

+0

@我在這個例子中認爲它是在GUI上生成隨機大小的對象 - 所以隨機數用於邊,尺寸和顏色。合理簡單 –

回答

8

Math.random()確實使用Random,但它使用的單個實例。 但是由於Math.random()相當於Random.nextDouble();這通常不是非常有用的,那將是愚蠢的,而不是用它Random類,它有很多的方便的方法,讓你的意圖明確,錯誤的可能性較小,如下面的代碼片段展示了。

int x = (int)(Math.random() * 100); // Without parentheses you'll always get 0 
int y = rnd.nextInt(100); 

我懷疑你的講師有大約編程的堅實理論知識

+1

可讀性好 – assylias

-1

,如果這個問題變得封閉爲過於主觀,我不會感到驚訝。 但無論如何 -

我會說這取決於上下文。你使用Random的'錯誤'是否會導致性能差,代碼不可讀或者其他任何問題?如果沒有,那麼我認爲它沒問題。

人們可以挑剔關於這類事情,但在現實中 - 至少在我看來 - 有更大的事情擔心比這樣的理論問題。

1

我認爲你的導師是錯誤的。可維護性應該是您的主要目標之一,重現性對調試和可維護性至關重要。 Math.random()使您無法控制播種,因此如果在測試和調試過程中注意到某些奇怪現象,則無法重現。

相關問題