1

我正在开发一个网页,但我需要一个从目录中选择随机页面的 JS 脚本。目前我有这个脚本;

    <!-- 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/

多谢你们

4

4 回答 4

2

你没有索引,你应该这样做:

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

因为链接数组的第 0 个元素不会触发,因为 1+random..

编辑:

var a = Math.floor(Math.random() * 11);
于 2012-08-24T13:28:54.547 回答
1

数学随机产生一个介于0和之间的值1,如果乘以 10,则得到来自0.0to 的数字9.9,如果四舍五入,则得到来自0to 的数字10。所以你不需要给它加 1,这在某些情况下会导致 11,而你没有,因为undefined. 只需使用:

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

编辑:纠正我错误的第一个答案

注意:实际上不会产生随机数的标准分布,因为 0 和 10 只会Math.random()在 0.0 - 0.049... (0) 和 0.95 - 0.99... (10) 的情况下产生,您可以通过以下方式计算赔率:

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

这样整个十进制范围(x.0-x.9)就会下降。

于 2012-08-24T13:29:05.837 回答
1

你在行;尾缺少分隔符和

function randInt(max, min) {
    return (min || 0) + Math.floor(Math.random()*(max+1));
}
于 2012-08-24T13:29:41.937 回答
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] ;
} 
于 2012-08-24T13:32:00.703 回答