2017-02-22 37 views
-2

我正在製作一款紙牌遊戲,但現在我遇到了隨機數發生器的問題。我用100個選項創建新數組,然後從該數組中隨機選擇一個數字。但是,當我document.write correctNum,我變得不確定。爲什麼我的一個新數組中的隨機數發生器不工作? Javascript

var numList = new Array(100); 

var correctNum = numList[Math.floor(Math.random()*numList.length)]; 

document.write(correctNum); 
+4

你是不是產生一個隨機數陣列,因爲你不填充陣列,只訪問這將是不確定的,因爲你沒有填寫數組... – Li357

回答

1

您必須填寫一些東西。你所做的只是聲明它的大小,因爲JavaScript中的數組是動態的(也就是說,它們的大小可以在它們被創建之後增長和縮小),但它對預先聲明大小沒有用處:

var numList = []; 
 

 
// Fill the array with numbers from 0 to 99 
 
for(var i = 0; i < 100; ++i){ 
 
    numList.push(i); 
 
} 
 

 
var correctNum = numList[Math.floor(Math.random()*numList.length)]; 
 

 
// Don't use document.write. It will wipe out the existing document in 
 
// favor of the new content. Either write the to the console (for debugging) 
 
// or inject data into pre-existing element that's already on the page 
 
console.log(correctNum);

+0

啊謝謝隨機指數。我誤解了新陣列正在做什麼。 –

0

陣列numList包含100未定義。一旦你用真實數據填充數組,其餘的邏輯就會給你想要的東西。

例如做:

for(var i=0; i<numList.length; i++){ 
    numList.push(i); 
} 
0

new Array(100)返回陣列100個未定義元素。

var numList = new Array(100); 
 
console.log(numList);

你必須填寫,或只是讓包含你喜歡,如果你想從它那裏得到一個隨機數的數字數組。

var numList = Array.apply(null, {length: 100}).map(Number.call, Number); 
 

 
var correctNum = numList[Math.floor(Math.random()*numList.length)]; 
 

 
document.write(correctNum);

0

由於您的陣列目前是空的,我會建議你將喜歡的任何數字填充它。另一種解決方案,如果你只是想從1-100選擇一個隨機數,你的代碼使用下面這段代碼,將在1和100之間

Math.floor((Math.random() * 100) + 1); 
好運返回一個隨機數! :)

0

你的數組仍然是空的。 通過使用構造函數arr = new Array(<integer>)它只獲取長度但沒有索引值。

var arr = new Array(100); 
console.log(arr.length); // 100 
console.log(arr[1]); // undefined 
+0

你會如何解決這個問題? – Li357

相關問題