幾年前我停止了編程,因爲我不認爲我會畢業。驚喜,現在我是,我必須刷新生鏽的新手技能。我決定從用Java編寫的骰子滾動程序開始。這個程序的第一個版本應該是在1到10之間吐出一個隨機數字。在我去的時候,我打算用一個GUI來擴展它,讓用戶選擇擲骰子的數量和類型。用Java創建一個Dice Roller。幫我理解爲什麼這有效?
這個程序的第一個版本的作品。我的問題是我不知道它爲什麼起作用。我第一次使用java.util.random並使用random.nextInt(),但範圍是巨大的,我不知道如何限制它到一個特定的範圍。
我在網上搜索,發現有用的東西。這是我的。
class DiceRoller {
public static void main(String[] arguments){
int min = 1;
int max;
int result;
result = rollDice(10, min);
System.out.println(result);
}
public static int rollDice(int maximum, int minimum){
return ((int) (Math.random()*(maximum - minimum))) + minimum;
}
}
,我發現,使這項工作的具體部分是:
public static int rollDice(int maximum, int minimum){
return ((int) (Math.random()*(maximum - minimum))) + minimum;
}
但我不明白爲什麼它的工作原理。 Math類中的random()與java.util中的Random有什麼不同?爲什麼需要取隨機數並乘以最大值和最小值的差值,然後將結果加到最小值?說實話,我覺得自己很愚蠢,但我想明白爲什麼會這樣做,而不是僅僅接受代碼並使用它,因爲它確實如此。
編輯:我知道..我知道..我應該剛剛讀過類文檔。無論如何,感謝我的侮辱和回答。我很感謝答覆,並感謝亞倫的解釋。
閱讀此問題http://stackoverflow.com/questions/363681/generating-random-integers-in-a-specific-range.some答案描述它如何works.read這個答案http://stackoverflow.com/ a/363732/2227526 –
Math.random返回一個0.0到1.0之間的隨機double。在紙上寫出這個等式的作用,......想一想。 –
官方的JavaDocs始終是一個很好的信息來源。你會發現'Random'和'Math.random()'之間的區別,當然還有每個類和方法的文檔。 鏈接:https://docs.oracle.com/javase/8/docs/api/ – Michael