2017-07-22 24 views
0

我有一個數組稱爲答案,它的長度是20.所以Math.floor(Math.random() * answers.length);等於Math.floor(Math.random() * 20);我想隨機選擇任何ONE數組中的這20個條目,這意味着我想要1,2,3 ,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20是可能選擇的數字;所以每個條目都可以選擇。這是否意味着我應該使用Math.floor(Math.random() * answers.length) + 1;?最終,我的問題是詢問如果我添加「+ 1」是否有效。 例如:https://jsfiddle.net/Henry7720/v96Lj4aw/(不含1)https://jsfiddle.net/Henry7720/v96Lj4aw/1/(帶1)如何使用answers.length從數組中選擇任何一個條目?

+0

@Am_I_Helpful這是JavaScript,而不是Java。 Java有這樣做的不同方式,所以這不是重複的。 – tupperkion

+0

@tupperkion - 當我評論時,問題中沒有javascript標記,因此我將它作爲java使用,因爲Java也具有相同名稱的方法! –

+0

@Am_I_Helpful哦,好的,理解。 – tupperkion

回答

2

若要將Math.random()轉換爲一定範圍內的整數,您可以使用Math.floor(Math.random() * (max - min) + min)。請注意,這將挑選任何數字,即至少min小於max。因爲min爲0,可以只取這些值的,所以從陣列得到的值,使用:

var item = array[Math.floor(Math.random() * array.length)]; 

編輯:另外,加入一種會簡單地通過一個偏移的索引。這意味着它永遠不會選擇值0,並且在array.length中有一個值選擇超出數組邊界的值,返回undefined

+0

我在這裏使用了你的解決方案:http://henrysprojects.x10host.com/8-ball/array.php – Henry7720

1

您給出的例子實際上是忽略了數組中的值。使用類似於下面的東西會讓你選擇一個隨機值,無論值裏面:

[2, 4, 6, 8] 
["Matt", "Daniel", "Steve"] 

等:

var randomAnswer = answers[Math.floor(Math.random() * answers.length)] 

然後,它會爲answer數組一樣工作。

0

您可以使用此功能。 只需提供函數調用的最小值和最大值,函數將返回您提供的參數範圍內的隨機值。

function rng(min,max) { 
    var rng = Math.round(min - 0.5 + Math.random() * (max - min + 1)); 
    return rng; 
} 
answers[rng(0,answers.length -1)]; 
相關問題