document.write("<p>6个1-100的随机数为:")
for(var i=0,s=0i<6i++){
var n=parseInt(Math.random()*100)+1
if(i>0)document.write("、")
document.write(n)
if(n%2==1)s+=n
}
document.write("</p><p>其中的奇数和为 "+s+"</p>")
</script>
var getRandomArray = function() {var i = 0,
s = '',
sp = ',',
next
while (i <100) {
// 产生1-100的随机数
next = Math.random() * 100 + 1
// 判断产生的数是否在随机数字符串里
if (s.indexOf(next) === -1) {
// 不存在
// 则加上这条
s += next + sp
// 并且记数器加1
i++
}
// 否则记数器不加1,继续循环
}
// 最后得到的是xx,xx,形式的字符串
// 因为split函数会保留最后一个分隔符后的数
// 所以通过slice(0,-1)去掉最后一个字符(也就是,号)
// 这样99个分隔符拼成的字符串就会被,号分割
// 成100个随机数组了
return s.slice(0, -1).split(',')
}
alert(getRandomArray())
就是生成无重复随机数了。我跟你说下原理,代码的话你自己就明白了。每次生成一个随机数,再判断生成的随机数,是否存在于已经生成的随机数群组中,如果存在,则重复执行生成随机数这个动作。
这样就可以保证生成的随机数没有重复。而且位置也没有一定的规律。
我查了下手册,还有一个更简单的方法就是使用函数:shuffle( array &array )
该函数的作用是随机打乱一个数组。
这样就简单了,你先生成一个数组(1-100),然后使用此函数将数组随机打乱,这样就生成了无重复的随机数组。
以下代码亲测可行。
<?php
$numbers = range(1,100)//生成1-100之间的数组。
srand((float)microtime()*1000000)//建立随机种子
shuffle($numbers)//打乱数组
$i=0//换行标记
foreach ($numbers as $number) {//遍历数组
$i++//标记自增
echo "$number "//输出数值
if($i %10==0) echo "<br>"//如果输出10个则换行。
}
?>
MD写完了,发现你问的是JS的,我回答的是PHP的,不过方法1是通用的。JS中不知道有没有这样的函数。