Javascript中如何得到一个元素为不重复随机数的数组
比如长度为18的数组,元素是1-18的int数字生成数组时18个数字在数组中随机排放每个数字都出现且仅出现一次头都要焦了想不出来求老师解答一楼的值会重复啊仅仅都是随机数值...
比如长度为18的数组,元素是1-18的int数字
生成数组时 18个数字在数组中随机排放
每个数字都出现 且仅出现一次
头都要焦了想不出来 求老师解答
一楼的值会重复啊
仅仅都是随机数值的话又不难的 -。-| 展开
生成数组时 18个数字在数组中随机排放
每个数字都出现 且仅出现一次
头都要焦了想不出来 求老师解答
一楼的值会重复啊
仅仅都是随机数值的话又不难的 -。-| 展开
5个回答
展开全部
var arr = [];
for(var i=1;i<19;i++){
arr.push(i);
}
function GenerateRandomNumber(range){
return parseInt(Math.random()*range);//随机生成一个0到range的数字
}
function RegroupArr(arr){
if (arr.length <= 1) return arr;
var backupArr = [].concat(arr);//备份原来的数组,后面的操作会对数组进行修改
var result = [];
var r = GenerateRandomNumber(backupArr.length - 1);//生成0到length-1之间的随机数
result = result.concat(backupArr.splice(r,1));//从原来的数组中删除随机数位置的数字并存到结果中
result = result.concat(RegroupArr(backupArr));//回调本函数,对删除随机数后剩下的数组进行排序
return result;
}
for(var i=1;i<19;i++){
arr.push(i);
}
function GenerateRandomNumber(range){
return parseInt(Math.random()*range);//随机生成一个0到range的数字
}
function RegroupArr(arr){
if (arr.length <= 1) return arr;
var backupArr = [].concat(arr);//备份原来的数组,后面的操作会对数组进行修改
var result = [];
var r = GenerateRandomNumber(backupArr.length - 1);//生成0到length-1之间的随机数
result = result.concat(backupArr.splice(r,1));//从原来的数组中删除随机数位置的数字并存到结果中
result = result.concat(RegroupArr(backupArr));//回调本函数,对删除随机数后剩下的数组进行排序
return result;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
<script type="text/javascript">
function randArr(arr)
{
var len = Number(arr.length);
var newArr = new Array();
for(var i=len; i > 0; i--)
{
var m = i - 1;
var n = parseInt(Math.random() * m);
newArr[m] = arr[n];
arr.splice(n, 1);
}
return newArr;
}
//test
var a = Array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18);
alert(randArr(a));
</script>
function randArr(arr)
{
var len = Number(arr.length);
var newArr = new Array();
for(var i=len; i > 0; i--)
{
var m = i - 1;
var n = parseInt(Math.random() * m);
newArr[m] = arr[n];
arr.splice(n, 1);
}
return newArr;
}
//test
var a = Array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18);
alert(randArr(a));
</script>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
var rand = 0;
var newPic = [];
var pic = [1,2,3] //length = 18
for ( var i=0; i<18; i++ ){
rand = Math.floor(Math.random()*19);
newPic.push(pic[rand-1].slice());
}
alert(newPic);
var newPic = [];
var pic = [1,2,3] //length = 18
for ( var i=0; i<18; i++ ){
rand = Math.floor(Math.random()*19);
newPic.push(pic[rand-1].slice());
}
alert(newPic);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询