2011-10-24 31 views
2

我想使用隨機生成器設置一個簡單的加法序列。該數字必須是整數。 下面是我想要實現的一個示例:試圖設置一個簡單的加法序列使用隨機生成器

(4,10,16,22,28,?):用戶必須輸入序列中的下一個數字。 (因爲每個數字相距6個數字,所以它是34)。

用戶從生成器獲得隨機數,但相鄰的2個數字必須具有相同的距離,二。例如:10-4 = 6,16-10 = 6,22-16 = 6.

private static void simpleAdditionSequence() { 
    int num1, num2, num3, num4, num5, numUser; 
    Random generator = new Random(); 

    num1 = generator.nextInt(2147483647); 
    System.out.println(num1); 
} 

我遇到的問題是搞清楚如何創建num2。如果我只是使用另一個生成器,它可能會少於num1,並且它需要與其餘數字的距離相同。

(注意 - 我用2147483647,所以我可以生成隨機整數

+0

作爲一個經驗法則,SO上的問題在標題中沒有標記爲「[resolved]」,但您應該接受最佳答案。 – brc

+1

@ MJ93:兩個小小的挑逗...在Java寫作* Integer.MAX_VALUE *不太容易出錯,並且比寫入*「2147483647」*更能傳達「意圖」。然後,如果你真的堅持使用* nextInt(Integer.MAX_VALUE)*選擇你的步驟,那麼你會想要實際使用* long *來解決你的問題,因爲使用* int *的解決方案會在步驟很大時破壞(帶* int *你會很快「打包」並處理負值)。 – TacticalCoder

+0

謝謝,我瞭解到,我不必使用任何整數值,我可以將它設置爲像下面這樣的限制:100.但是,這很好理解。 – MJ93

回答

3

在你的問題只有兩個數字實際上隨機 - 第一個數字和數字之間的差異

生成兩項。 。隨機整數;一個基地,一個步驟,並且內容

(有一件事看出來的 - 你應該永遠只能創建一個隨機數發生器我你的節目。每當你需要隨機數時重新使用該生成器。如果你每次需要一個隨機數時創建一個新的發生器,你的數字就不會有你想要的隨機性。)

+0

謝謝,我發現之前就已經想通了。就像你說的,我的第一個數字和它們之間的差異是唯一的隨機數。我可以添加我的第一個數字,以此類推。 – MJ93

-1

首先,nextInt()只返回int數據類型。第二,如果它是一個你最終生成的模式,那麼你只需要生成第一個數字,然後它與第二個數字之間的差異,然後從那裏你可以自己計算剩餘的數字。要使用您的示例:

num1 = generator.nextInt(2147483647);將數字4存儲在變量num1中。然後,您生成一個隨機增量值,假設您再次調用nextInt()方法,並將6存儲在您的increment變量中。然後:

num2 = num1 + increment; // 4 + 6 = 10 
num3 = num2 + increment; // 10 + 6 = 16 
// Etc... 
相關問題