我要从1-10里面产生随机数,比如说要产生4个随数,一次只产生一个随机数,并且不重复;如第一次产生的随机数是1,就把1从数组中拿掉,第二次产生随机数就在2-9里面产生,请问下着改怎么写?(注意:一次只产生1个随机数,不是一次产生4个)
解决方案 »
- 如何获取DIV中的js代码的点击事件
- js导出数据到excel时,如何指定单元格格式
- document.getElementById(id)的问题,急,在线等!!!!!
- JAVASCRIPT 实现表格对齐
- 高难度的js问题
- select对象,动态添加option
- 到底怎么写?function swap(x) {document.(x+"sss").src="src";}
- 请问如何用javascript获得访问该网页用户的IP地址?
- 在某输入框中输入回车,如何将焦点移到下一输入框中?
- 下拉框得到焦点问题
- 有能将图片名字,自动成为title和alt的JS代码吗?
- (急急急)Dojo xhrGet 怎么解析服务器响应的数据
var seeds = [1,2,3,4,5,6,7,8,9,10];
var getRand = function () {
if(seeds.length == 0){
alert("没了");
return;
}
var rand = Math.ceil(Math.random()*seeds.length);
var result = seeds[rand-1];
seeds.splice(rand-1,1);
return result;
};
</script>
<input type="button" value="" onclick="getRand()" />
思路就是用数组来实现 例如数组a初始10个值,分别是1~10,然后进行4次循环 每次循环从数组长度中随机获取一个位置值n,然后输出a[n],接着用splice把当前位置的数组元素删除,接着进行下一次循环,直到循环结束
代码如下,请放在<body></body>标签中测试
<script language="javascript">var a=Array(,1,2,3,4,5,6,7,8,9,10);
for (var i=0;i<4;i++){
b=parseInt(a.length*Math.random());
document.write("time"+(i+1)+"="+a[b]+"<br>");
a.splice(b,1);
}</script>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<script type="text/javascript">
function GetRandomNum(Min, Max) {
var Range = Max - Min;
var Rand = Math.random();
return (Min + Math.round(Rand * Range));
}
Array.prototype.remove = function (dx) {
if (isNaN(dx) || dx > this.length) { return false; }
for (var i = 0, n = 0; i < this.length; i++) {
if (this[i] != this[dx]) {
this[n++] = this[i]
}
}
this.length -= 1
}
var number = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var str = [];
for (var i = 0; i < 4; i++) {
var j = GetRandomNum(1, 10-i);
str[i] = number[j];
number.remove(j);
}
alert(str);
</script>
<body></body>
是不是把把上一个产生的随机数删掉,b是什么?
function getRandomNumbers(start,end,times){
if(!(end - start))return end;
var randomNumberArr = [],
resultArr = [],
i;
for(i = start;i <= end;i += 1){
randomNumberArr[randomNumberArr.length] = i;
}
for(i = 0,len = times || 4;i < len; i += 1){
if(!randomNumberArr.length)break;
var r = Math.ceil(Math.random()*randomNumberArr.length);
resultArr[resultArr.length] = randomNumberArr[r - 1];
randomNumberArr.splice(r - 1,1);
} return resultArr;
}alert(getRandomNumbers(1,10,4));