2012-02-24 75 views
2

隨機生成的數字我只需要知道我應該怎麼做才能讓這樣一個基本陣列充滿隨機生成的數字。現在我知道如何做到這一點,我不知道該怎麼做是爲了讓隨機生成的數字比最後一次生成的數字大到數組的末尾。在基本陣列

回答

1

產生隨機數,然後對數組進行排序。
可以使用Arrays.sort()

它不確保每個數字是嚴格更大然後是以前的編號[它只註冊就<=],因此,如果它是一個問題的數組進行排序 - 你必須確保你在生成的數字中沒有愚蠢行爲。

1

您可以生成一個隨機數組,然後使用Array sort對其進行排序。

+0

是的,現在當我去我的驅動程序類,以顯示與S.O.P.數組我在arr [i] = gen.nextInt(10000)上得到運行時錯誤;我不知道爲什麼要這樣做。我設置ARR [I] = gen.nextInt(10000)到名爲值的變量,它是一個Int – Tigh 2012-02-25 04:45:31

+0

@Tigh你需要表現出更多的代碼,並添加一個堆棧跟蹤。請編輯你的問題,或者更好地問一個新問題以獲得更多關注。 – dasblinkenlight 2012-02-25 11:14:48

2

只需爲列表生成,然後按最小排序即可。

for(int i = 0; i < arr.length; ++i) { 
    arr[i] = Random.nextInt(100); 
} 
Arrays.sort(arr); 
+0

由於某種原因,當I CODE它返回ARR [I] = Random.nextInt(100),按照該實施例,不是字面上作爲其在這一問題看出,我得到該行上運行時錯誤。對於我的實際代碼,它被讀作array [x] = gen.nextInt(10000);.我不能說Random.nextInt(num),因爲這將是一個非靜態方法的靜態引用。 – Tigh 2012-02-25 04:35:08

+0

對不起,我的意思是說,在評論的開頭,代碼字符串導致運行時錯誤,它不返回任何東西。 – Tigh 2012-02-25 04:36:03

0

你可以有你自己產生增量的算法...

例如...

每次隨機並添加號碼到最後一個:)

Random在java類不允許你有一個最小限制從哪裏開始..只有一個...

例如:

myArray[0] = Random.nextInt(10000); 
for(int i=1; i<myArray.length; i++) 
{ 
    myArray[i] = myArray[i-1]+Random.nextInt(10000); 
} 

所以..它是隨機的,您不必對它進行排序..嘗試藏在心裏簡單...

+0

請注意,它可能因[overflow](http://en.wikipedia.org/wiki/Arithmetic_overflow)而失敗。 – amit 2012-02-24 20:36:13

+0

如果他有一個長度爲2000000的數組..是的:)如果只有1000 ..不! :) – Alex 2012-02-24 20:42:33

+0

(1)當你使用'nextInt(10000)'時,你無限制地限制自己。你可以用4填充它。 (2)當數組大小爲〜200000 [零減1]時可能會溢出。無論如何,OP使用這個解決方案時只需要考慮一點。 – amit 2012-02-24 20:45:36

1

有關於這個問題的評論,我失去了作者的名字,即建議增加隨機生成的數字與之前的數字,我認爲這是一個有趣的方法。

arr[0] = Random.nextInt(100); 

for(int i = 1; i < arr.length; ++i) { 
    arr[i] = arr[i-1] + Random.nextInt(100); 
} 

這不需要對結果數組進行排序。

+0

注意它可能會失敗,由於[整數溢出](http://en.wikipedia.org/wiki/Arithmetic_overflow) – amit 2012-02-24 20:36:38

+0

@amit,有效的關注,這取決於使用的隨機範圍和陣列的大小。 – 2012-02-24 20:37:52

+0

如果數字被限制在特定的範圍內,值得關注的仍持有:你可能不會「溢出」,但你可能會得到一個號碼是超出範圍。 – amit 2012-02-24 20:38:49