2012-08-24 39 views
1

我正在開發一個網頁,但我需要一個JS腳本從目錄中選擇一個隨機頁面。目前我有這個劇本;JavaScript - 從目錄中選擇一個隨機頁面

<!-- Hide this script from old browsers -- 

var links = new Array(10) 
links[0] = "anal.html" 
links[1] = "brr-fail.htm" 
links[2] = "anal.html" 
links[3] = "brr-fail.htm" 
links[4] = "anal.html" 
links[5] = "brr-fail.htm" 
links[6] = "anal.html" 
links[7] = "brr-fail.htm" 
links[8] = "anal.html" 
links[9] = "brr-fail.htm" 
links[10] = "anal.html" 
function go() { 
var a = 1+Math.round(Math.random()*10) 
var i = a 
location = links[i] 
} 
// -- End Hiding Here --> 

</script> 

(別擔心,它不是同性戀色情 - 米姆)

正如你所看到的,它是有點複雜的,有時它帶來了一個「未定義」頁面錯誤。有什麼辦法讓它從整個目錄中選擇一個隨機頁面?說一些像;

www.urlhere.co.uk/memes/random/

謝謝你們

+1

JS是客戶端,你不能用它列出服務器上的目錄。 – F0G

回答

1

數學隨機產生01之間的值,如果你用10乘,你會得到數0.09.9,如果你一輪,你會得到數010。所以你不需要添加1,在某些情況下,這會導致11,因爲undefined,所以你沒有。只需使用:

var a = Math.round(Math.random()*10); // {0-10} 

編輯:糾正我的錯誤1回答

注:實際上不會導致隨機數的標準分配,因爲0,如果,Math.random() 0.0 10只會導致 - 0.049 ...(0)和0.95 - 0.99 ...(10)你甚至可以賠率本:

var a = Math.floor(Math.random()*11); // {0-10} 

這樣一個整體小數範圍(X.0-X.9)地板下。

+0

提交者需要在0到10範圍內的隨機值。由於Math.random()不會等於或大於1,因此'Math.random()* 11'生成的每個數字都小於11,所以'Math.floor(Math.random()* 11)'將得到數字0到10. – aorcsik

+0

啊,看起來我需要一個PHP腳本來代替然後......嗯,狡猾 –

+0

在PHP中,你有一個這樣的函數:'$ a = rand(0,10);'GL! – aorcsik

2

你出局了指數,你應該做的:

var a = Math.round(Math.random()*10); 

由於第0個元素的鏈接陣列不會觸發由於1 +隨機..

編輯:

var a = Math.floor(Math.random() * 11); 
+0

這段代碼產生'a = 0'或'a = 10'的機會是'a'的一半,它是兩者之間的任何其他值。 –

1

你錯過了上線的末端;分隔符和

function randInt(max, min) { 
    return (min || 0) + Math.floor(Math.random()*(max+1)); 
} 
+1

';'是可選的... –

+0

感謝所有的更正傢伙。有沒有更簡單的方法來做到這一點?我可以使用某種基本腳本來隨機選擇一個頁面,而不是列出所有頁面?一點AI。 –

+0

只有當頁面被選擇爲服務器端時,因爲沒有所有頁面的某種索引,JS將不知道哪些頁面存在。 –

1
var links = new Array(10) 
links[0] = "anal.html" ; 
links[1] = "brr-fail.htm" ; 
links[2] = "anal.html" ; 
links[3] = "brr-fail.htm" ; 
links[4] = "anal.html" ; 
links[5] = "brr-fail.htm" ; 
links[6] = "anal.html" ; 
links[7] = "brr-fail.htm" ; 
links[8] = "anal.html" ; 
links[9] = "brr-fail.htm" ; 
links[10] = "anal.html" ; 
function go() { 
var a= Math.floor(Math.random() * links.length); 
var i = a; 
location = links[i] ; 
}