2016-12-30 51 views
-1

大家好我有這樣的命令:如何停止除第一次以外的每次生成的隨機?

for (z = 0; z < utenti.length; z++) { 
    utenti[z] = rand.nextInt(1000) + 1; 
} 

,它的完成產生1和1000我希望它停止之間的隨機數之後,命令是我在程序的功能之一,但每次我記得號碼再次隨機生成。第一次之後有沒有辦法阻止隨機發電?

+0

爲什麼不把數字保存到變量中? –

+0

此代碼必須屬於類中的方法。你能否告訴我們該課程的相關部分,特別是提到的方法和'utenti'數組? – Seelenvirtuose

+0

爲什麼你每次都要回憶它?你不能簡單地使用具有數字的'utenti []'變量嗎?如果你更清楚地解釋你的意圖會有幫助。 –

回答

1

有沒有辦法在第一次後停止隨機生成?

是的。第一次後不要執行該代碼。例如:

if (firstTime) { 
    for (z = 0; z < utenti.length; z++) { 
     utenti[z] = rand.nextInt(1000) + 1; 
    } 
    firstTime = false; 
} 
0

我你不想兩次運行這段代碼,那麼你爲什麼要調用它兩次?

由於這段代碼只需要執行一次,因此可能是錯誤的地方。它可能屬於構造函數或其他東西,具體取決於您的程序結構。

  • 你可能只是做Stephen C的確在his answer,使用boolean跟蹤它是否是第一次還是不行。這對你來說可能是最簡單的選擇。
  • 除了另一個答案,還要注意一個Random類的構造函數接受一個種子。如果保持種子相同,則僞隨機數的順序將相同。這爲您節省了utenti陣列的內存使用情況,特別是對於大型陣列。

    private long seed; 
    
    private void determineSeed() { 
        long seed = new Random().nextLong(); 
    } 
    

    然後用:

    Random rand = new Random(this.seed); 
    for (int i = 0; i < utenti.length; i++) { 
        int number = rand.nextInt(1000) + 1); 
        // Don't save it to an array, do something with number 
    } 
    

    的缺點是,你可以在序列(例如,utenti[i])不使用特定的元素,你必須按順序使用隨機數。

+0

但我其實需要回想一下具體的元素。我的數組目前有50個單元格,如果我需要回憶一個特定的單元格,那麼這個代碼將不起作用呢?例如:我記得用戶30,他有20美元的隨機生成,我加10 $,所以他有30美元,我再次回憶用戶30,現在他有另一個隨機生成的數額,而不是30美元,他應該有。 – Zabusy