2010-03-22 57 views
1

我有一個整數數組(例如1,2,3,4,5或1,2,3,... 10或1,2,3,... 50)我希望每次都有不同順序的隨機數字。有沒有實用的方法來做到這一點?在一個子集內隨機化數字

例如對於1,2,3,4,5後隨機,它可能是[1,5,4,2,3或2,1,3,5,4或3,1,2,4,5或... ]

我想知道是否有一個Java實用程序的方法/類已經提供了這種能力?

+0

如果您希望在每次最終用完未使用的排列時對其進行排序。然後怎樣呢? – 2010-03-22 13:11:37

+0

只要它的排列順序不同,偶爾得到同樣的訂單對我來說也沒問題。 – Sam 2010-03-22 14:53:38

回答

2

Collections.shuffle

這不會直接幫助數組,但如果將其轉換爲List<Integer>它將起作用。 (您不能使用Arrays.asListint[],很可惜。)

或者,你可以實現一個Fisher-Yates Shuffle自己很容易 - 事實上,維基百科頁面,甚至有一種實現在Java中:)(我將其更改爲採取Random引用作爲參數,但是 - 你不希望創建的Random一個新實例每次調用時)

+0

(+1),如果數組是非基元的,則使用Arrays.asList(array)完成轉換。 – Bozho 2010-03-22 13:16:04

+0

@Bozho:謝謝,修正了'asList'的引用。 – 2010-03-22 13:17:25

+0

和http://commons.apache.org/lang/api/org/apache/commons/lang/ArrayUtils.html可以幫助那個 - 'toObject(..)' – Bozho 2010-03-22 13:18:45