2013-06-24 57 views
-2

我想在bb1,bb2,bb3,bb4中顯示隨機數。如何捕獲重複的隨機數

alphaset:Array = [1,2,3,4,5,6,7,8,9,10]; 

bb1 = randomNumber(0, alphaset.length); 

bb2 = randomNumber(0, alphaset.length); 

bb3 = randomNumber(0, alphaset.length); 

bb4 = randomNumber(0, alphaset.length); 

在上面,我要刪除的每個變量的重複條目(即BB1,BB2,BB3,BB4)

最後我想隨機數沒有的每個變量

重複條目,請任何人都可以幫助我實現它。

以上四個變量是添加程序的選項。我必須比較上面的四個變量和bbb = randomNumber(1,10),並隨機顯示這四個變量中的bbb值,例如,[bbb = bb1或bbb = bb2或bbb = bb3或bbb = bb4] coz ,我必須選擇bbb值來顯示輸出。

回答

1

如果當他們正在使用的陣列中的所有值是唯一與開始,只是將其刪除:

var list:Array = [1,2,3,4,5,6,7,8,9,10]; 

function getRandom(list:Array):* 
{ 
    var i:int = Math.random() * list.length; 
    return list.splice(i, 1)[0] || null; 
} 

var bb1:int = getRandom(list); 
var bb2:int = getRandom(list); 
var bb3:int = getRandom(list); 
var bb4:int = getRandom(list); 
+0

感謝烈士,它的工作原理 –

+0

以上四個變種都是加法程序的選項。我必須比較上面的四個變量和bbb = randomNumber(1,10),並隨機顯示這四個變量中的bbb值,例如,[bbb = bb1或bbb = bb2或bbb = bb3或bbb = bb4] coz ,我必須選擇bbb值來顯示輸出。 –

1

一種選擇是重新洗牌隨機元素的整個列表 - 那麼你可以採取的前N個元素,其中N是您需要的數字,並且知道這些元素都將是唯一且隨機選擇的。如果您使用大量的隨機元素列表,這比採樣和刪除更快。

如果您找不到shuffle的標準實現,請實施Fisher-Yates Shuffle:http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm重要的是有n!可能的方式讓洗牌出來,而不是你錯誤地得到,如果你一次拿一個元素,並允許它與任何其他元素(包括以前的元素)進行交換,否則某些配置將比其他配置更普遍。