美文网首页
获取不重复的随机数

获取不重复的随机数

作者: 小舒仔 | 来源:发表于2017-11-01 00:25 被阅读0次

来自脚本之家

var count=3000; 
var original=new Array;   //原始数组 

//给原始数组original赋值 
for (var i=0;i<count;i++){ 
    original[i]=i+1; 
} 
original.sort(function(){ return 0.5 - Math.random(); }); 
for (var i=0;i<count;i++){ 
console.log(original[i]+"  "); 
} 

JavaScript的Math对象提供了random()方法,可以获取一个[0,1)的随机数,利用这个方法,取一个随机数容易,但要是取一个随机并且不重复的数,就需要绕点弯子

试着更换一下思路,获取随机数并不一定需要随机取得一个值,并前后判断是否重复,可以首先创建一个范围,并以该范围所有的值创建一个数组,将数组的排序随机,那么从该数组中按线性获取的值,不也就是随机不定的吗

且由于只是重新排列了数组,数组中永远不会出现重复的值,只需利用Array的sort()方法和Math.random()方法就可以实现获取随机不重复的功能

sort()方法:sort()用于数组,如果不传入参数,那么它会对数组的每一项调用toString()方法,再对每一个字符串进行比较排序(按照首字符的编码大小排序)

若传入参数,会按照参数的正负情况对每两个进行该方法的数组项排序。

无参的方法调用在升降排序number类型数据时并不好用,所以一般给sort()方法传入一个“比较”函数,以此为number类型的数组项升降排序

利用该方法的排序特性,随机这种排序就可以达到随机打乱数组的效果

相关文章

  • iOS彩票类排列组合算法

    1. 从一个范围内获取一组不重复的随机数,返回这个数组: 头文件: /*获取随机数@param count获取随机...

  • rand.Seed(time.Now().UnixNano())

    rand.Int获取随机数,不加随机种子,每次遍历获取都是重复的一些随机数据 rand.Seed(time.Now...

  • 【练习】生成1-20的随机数,不重复

    要求:获取10个1-20之间的随机数要求不能重复

  • C# Random.Next()产生不重复随机数

    获取随机数,苦恼重复问题; 在循环中,rd.Next()会由于默认的时间间隔太小而产生出重复随机数,解决方案有两种...

  • 获取不重复的随机数

    来自脚本之家 JavaScript的Math对象提供了random()方法,可以获取一个[0,1)的随机数,利用这...

  • swift 随机数

    获取 Int 类型的随机数 调用方法如下: 获取Float 类型的随机数 调用方法如下: 获取CGFloat 类型...

  • 获取随机数

    获取随机数的几个小栗子 1.颜色随机 2.获取两数之间的随机数 指定值中获取随机数 4.获取随机的ip地址(0-255)

  • [MySQL]随机数

    获取[0, 1)的随机数 select rand() 获取[i, j)的随机数 select floor(i + ...

  • 随机数产生方法

    不指定范围产生随机数 使用rand(),需要包含头文件cstdlib,代码如下: 通过以上代码得到5个随机数,重复...

  • 从List中随机取N个不重复数据

    获取N个随机数,还是很容易出现重复,需要注意去重 2022-10-14 21:38:16.408 6746-67...

网友评论

      本文标题:获取不重复的随机数

      本文链接:https://www.haomeiwen.com/subject/gcxwpxtx.html