Math.random() 函数返回一个浮点, 伪随机数在范围[0,1)
得到两数之间的随机数:function getRandomArbitrary(min, max) {
return Math.random() * (max - min) + min} 得到一个两数之间的随机整数,包括两个数在内:
function getRandomIntInclusive(min, max) {
min = Math.ceil(min)
max = Math.floor(max)
return Math.floor(Math.random() * (max - min + 1)) + min
复制代码代码如下:
//获取数组中的随机数
//HF.Math.RandomNumbers是前缀,可以自己定义,主要看逻辑代码
HF.Math.RandomNumbers
=
function
(startNum,
endNum,
count,
repeat)
{
var
ret
=
[]
if
(repeat)
{
for
(var
i
=
0
i
<
count
i++)
{
ret[i]
=
HF.Math.Random(startNum,
endNum)
}
return
ret
}
var
tmp
=
[]
var
i
=
0
for
(var
s
=
startNum
s
<=
endNum
s++)
{
tmp[i++]
=
s
}
var
l
=
tmp.length
for
(i
=
0
i
<
count
i++)
{
ret[i]
=
HF.Array.Remove(tmp,
HF.Math.Random(0,
--l))
}
return
ret
}
你这写的有点混乱,稍微整理下:
<body><div id='odiv'></div>
<script>
var odiv=document.getElementById('odiv')
var num=''
var arr=[]
/*//这里修改下
for(var i=0i<4i=i+1){ //生成4个1-5不重复的数字
var t=Math.floor(Math.random()*5)//生成随机数
arr.push(t) //把生成的数字放进这个数组里
}
*/
//修改成这样的:
//定义一个while循环,循环的条件是集合arr的子集少于4个
while(arr.length<4){
var t=Math.floor(Math.random()*5)//生成随机数
if(arr.indexOf(t)==-1){
//如果t在集合arr中存在,indexOf会返回t在集合arr中的位置。
//如果不存在,indexOf会返回-1
arr.push(t) //把生成的数字放进这个数组里
}
}
for(var i=0i<=arr.lengthi++){
num=num+(i+1)+':'+arr[t]+'<br/>'
}
odiv.innerHTML=num
/*//上面用到了while循环,并且在内部就直接判断了生成的数字是否在集合中存在
//所以,这里就不需要判断了
function pd(){
for(var i=0i<arr.lengthi++){
if(arr[i]===t){
return true
}else{
return false
}
}
}
var bol=pd()//比较是否重复
if(bol){
i--
continue
}else{
num=num+(i+1)+':'+t+'<br/>'
}*/
odiv.innerHTML=num
</script>
</body>
把上面不需要的去掉:
<body><div id='odiv'></div>
<script>
var odiv=document.getElementById('odiv')
var num=''
var arr=[]
//修改成这样的:
//定义一个while循环,循环的条件是集合arr的子集少于4个
while(arr.length<4){
var t=Math.floor(Math.random()*5)//生成随机数
if(arr.indexOf(t)==-1){
//如果t在集合arr中存在,indexOf会返回t在集合arr中的位置。
//如果不存在,indexOf会返回-1
arr.push(t) //把生成的数字放进这个数组里
}
}
for(var i=0i<=arr.lengthi++){
num=num+(i+1)+':'+arr[t]+'<br/>'
}
odiv.innerHTML=num
</script>
</body>