用js实现随机选取10–100之间的10个且不重复的数字,存入一个数组。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用js实现随机选取10–100之间的10个且不重复的数字,存入一个数组。相关的知识,希望对你有一定的参考价值。

代码如下:

// 纯手打,不谢。
var randoms=[];
while (true)

    var isExists = false;
    // 获取一个10–100范围的数
    var random = parseInt(10 + (90 - 10) * (Math.random()))
    // 判断当前随机数是否已经存在
    for (var i = 0; i < randoms.length; i++) 
        if (random === randoms[i]) 
            isExists = true;
            break;
        
    
    // 如果不存在,则添加进去
    if (!isExists)
        randoms.push(random);
    // 如果有10位随机数了,就跳出
    if (randoms.length === 10)
        break;

结果图:

关于js

javascript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在html(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。

在1995年时,由Netscape公司的Brendan Eich,在网景导航者浏览器上首次设计实现而成。因为Netscape与Sun合作,Netscape管理层希望它外观看起来像Java,因此取名为JavaScript。但实际上它的语法风格与Self及Scheme较为接近。

为了取得技术优势,微软推出了JScript,CEnvi推出ScriptEase,与JavaScript同样可在浏览器上运行。为了统一规格,因为JavaScript兼容于ECMA标准,因此也称为ECMAScript。

参考技术A // 纯手打,不谢。
var randoms=[];
while (true)

    var isExists = false;
    // 获取一个10–100范围的数
    var random = parseInt(10 + (90 - 10) * (Math.random()))
    // 判断当前随机数是否已经存在
    for (var i = 0; i < randoms.length; i++) 
        if (random === randoms[i]) 
            isExists = true;
            break;
        
    
    // 如果不存在,则添加进去
    if (!isExists)
        randoms.push(random);
    // 如果有10位随机数了,就跳出
    if (randoms.length === 10)
        break;

附:

参考技术B var arr = new Array();//存储10个随机数的数组
for (var i = 9; i >= 0;)
var num = fRandomBy(10, 100);
//数组中不存在该数据则进行插入到该数组中
if (arr.indexOf(num)==-1)
arr.push(num);
i--;

;
// console.log(arr);
//获取10到100的随机数
function fRandomBy(under, over)
switch(arguments.length)
case 1: return parseInt(Math.random()*under+1);
case 2: return parseInt(Math.random()*(over-under+1) + under);
default: return 0;

参考技术C

前面几个都可以,我只是来写出我的答案的。。

var arr = (function()
    var _arr = [];
    for(var i=1;i<=100;i++)
_arr.push(i);

    return _arr;
)().sort(function(a,b)
    return Math.random()-0.5;
).slice(0,10);

编写一个js函数,该函数有一个n(数字类型),其返回值是一个数组,该数组内是n个随机且不重复的整数,且整数取值范围是[2,32]

今天在公众号里边看到这个问题,就自己写了下,发现自己还是有许多没注意到的,在此记录,

 

//返回一个随机整数 function getRandom( min , max ){ var rand = Math.round( Math.random() * (max - min) + min ); return rand; }; //重复性验证 function isRepeat(arr,n){ if (arr.indexOf(n) > -1) { return true; }; return false; }; function fn(n){ var arr = [],max = 32,min = 2; //是否是数字的验证 var isNum = !isNaN(Number(n)); //是否合法验证 var randOk = (n >= 1 && n <= (max - min + 1)) ? true :false; if (isNum && randOk) { for (var i = 0; i < n; i++) { var rand = getRandom(min,max); if (isRepeat(arr,rand)) { i-- ; }else{ arr.push(rand); } } } return arr; }; console.log(fn(31))
 
在此过程中遇到几个问题,关于函数取整数问题  做一下整理。

1.Math.random(); 结果为0-1间的一个随机数(包括0,不包括1) 
2.Math.floor(num); 参数num为一个数值,函数结果为num的整数部分。 
3.Math.round(num); 参数num为一个数值,函数结果为num四舍五入后的整数。

Math:数学对象,提供对数据的数学计算。
Math.random(); 返回0和1间(包括0,不包括1)的一个随机数。

Math.ceil(n); 返回大于等于n的最小整数。
用Math.ceil(Math.random()*10);时,主要获取1到10的随机整数,取0的几率极小。

Math.round(n); 返回n四舍五入后整数的值。
用Math.round(Math.random());可均衡获取0到1的随机整数。
用Math.round(Math.random()*10);时,可基本均衡获取0到10的随机整数,其中获取最小值0和最大值10的几率少一半。

Math.floor(n); 返回小于等于n的最大整数。
用Math.floor(Math.random()*10);时,可均衡获取0到9的随机整数。

以上是关于用js实现随机选取10–100之间的10个且不重复的数字,存入一个数组。的主要内容,如果未能解决你的问题,请参考以下文章

js实现随机选取[10,100)中的10个整数,存入一个数组,并排序。 另考虑(10,100]和[10,100]两种情况。

JS中,输出1-10之间的随机整数,用Math.random()咋搞呢

用lua生成一组10 个 1~100 之间不重复随机数。

怎么用python生成随机的且不重复的整数?

JS产生01到80的随机数

用js随机从1~100选择一个数字之后选择15个100以内的正整数,不能重复.