js 不相等 多次随机数_JavaScript 不重复的随机数
发布日期:2021-08-19 23:51:52 浏览次数:3 分类:技术文章

本文共 1395 字,大约阅读时间需要 4 分钟。

在 JavaScript 中,一般产生的随机数会重复,但是有时我们需要不重复的随机数,如何实现?下面就来讲解三种方法产生不重复的随机数,并进行比较,看那种方法效率高。

方法一

思路:首先创建一个1到3000的数组,每次取一个数,然后去除数组中取出的这个数, 这样就可以实现永不重复。

复制代码代码如下:

var count=3000;

var originalArray=new Array;//原数组

//给原数组originalArray赋值

for (var i=0;i

originalArray[i]=i+1;

}

var d1=new Date().getTime();

for (i=0;i

var index=Math.floor(Math.random()*originalArray.length); //随机取一个位置

document.write(index+" , ");

originalArray.splice(index,1);

}

var d2=new Date().getTime();

document.write("运算耗时"+(d2-d1));

性能:耗时 1528 毫秒。

方法二

思路:对方法一的slice方法进行改进,以提高效率。还是从原数组取出一个数, 然后让原数组的这个位置赋值为null 。下一次取数时判断是否为null,如果是null就不取。

复制代码代码如下:

var count=3000;

var originalArray=new Array;//原数组

//给原数组originalArray赋值

for (var i=0;i

originalArray[i]=i+1;

}

var d1=new Date().getTime();

for (var num,i=0;i

do{

num=Math.floor(Math.random()*count);

}while(originalArray[num]==null);

document.write(originalArray[num]+" , ");

originalArray[num]=null;

}

var d2=new Date().getTime();

document.write("运算耗时"+(d2-d1));

性能:耗时 290 毫秒。

方法三

思路:把原数组打散,然后再依次输出, 这样也可以做到随机永不重复,且效率更高。

复制代码代码如下:

var count=3000;

var originalArray=new Array;//原数组

//给原数组originalArray赋值

for (var i=0;i

originalArray[i]=i+1;

}

var d1=new Date().getTime();

originalArray.sort(function(){ return 0.5 - Math.random(); });

for (var i=0;i

document.write(originalArray[i]+" , ");

}

var d2=new Date().getTime();

document.write("运算耗时"+(d2-d1));

性能:耗时 229 毫秒。

通过性能分析,得出方法三为最佳方案。

转载地址:https://blog.csdn.net/weixin_31414801/article/details/111913516 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:怎么将tflite部署在安卓上_手把手教程:如何从零开始训练 TF 模型并在安卓系统上运行...
下一篇:小米扫地机器人清扫完成暂停_小米扫地机器人怎么清扫?采用新“看法” 让家里干净如新...

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月21日 12时15分11秒