js获取一组不重复的随机数的方法

一、基本思路:

建立一个数组,每次随机取走一个,放到新的数组中。

二、实现方法

1、方法一:

(1)创建一个数组arr,数组元素为所有可能出现元素的集合;

(2)通过num=Math.floor(Math.random()*num_total*first_value)方法获取随机数。

 随机数的范围为0-arr.length;

(3)通过push[num]获取数组该位置的元素;

(4)通过arr.splice(num,1)删除该元素;

完整写法为:

function roa(ar)
{
    var arr=ar;
    var temp=new array();
    for (i=0;i<count;i++)
    {
        var num=Math.floor(Math.random()*original.length);
        temp.push(arr[num]);
        arr.splice(num,1);
    }
    return temp;
}
时间: 2024-10-13 16:08:19

js获取一组不重复的随机数的方法的相关文章

论 Java 中获取一组不重复的随机数之性能问题

今天在做一个Java项目, 用到了使用一组不重复的随机数问题, 不管怎么做随机数里面总有几个是重复的. 于是上网去找资料, 在网上找到的资料中大部分都是一个思路: 网上的思路一:(性能不理想) 先生成一个随机数, 然后在生成下一个随机数的时候和以前的随机数进行匹配, 如果里面有当前生成的随机数, 那么重新去生成, 直到之前所生成的随机数组中没有当前所生成的那个数字为止. 这样做虽然能实现生成一组不重复的随机数, 但是性能不是很理想, 假如我们需要生成10个数字, 在生成第一的时候, 不用匹配,

小tip:生成一组不重复的随机数(去重的方法)

var arr = []; for(var i=0;i<150;i++){ // num为0-100的随机数 var num = Math.round(Math.random()*100); var state = true; for(var j=0;j<arr.length;j++){ //遍历数组中的每一项,和新添加的num比较,如果重复,则不向数组中添加,i后退一位:否则加入数组中 if(num==arr[j]){ state = false; i--; break; } } if(st

用js获取当前页面的url的相关信息方法

1. 当前页面的完整url获取方式: window.localtion.url; 2. pathname部分: window.location.pathname 3. 设置或获取对象指定的文件名或路径. alert(window.location.pathname) 设置或获取整个 URL 为字符串. alert(window.location.href); 设置或获取与 URL 关联的端口号码. alert(window.location.port) 设置或获取 URL 的协议部分. aler

js获取cookie 和 模仿php的&amp;_GET方法

//获取指定名称的cookie function getCookie(name){ var arr=document.cookie.split('; '); if(!arr)return false; for(var i=0;i<arr.length;i++){ var one=arr[i].split('='); if(one[0]==name)return one[1]; } return false; } //模仿php的get方法 function _get(name){ var url

js获取页面元素宽度、高度的方法总结

1.offsetWidth.width().clientWidth.scrollWidth offsetWidth是对象本身的宽度,包括边线滚动条等 clientWidth是对象能够被看到的宽度 clientWidth是对象内容的实际宽度 ps:$("#id").offsetWidth会返回undefined.原因:jquery选择器选择出来的元素都是数组对象,这些变量都是对一个明确的对象而言,正确写法应该是$("#id")[0].offsetWidth或者使用js

关于JS获取select值的两种实现方法

前几天发了一篇关于javascript获取select值的方法,后来发现有另一种实现方法,所以就都发出来比较一下: 方法一:通过获取option标签的value值来确定: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>select</title> </head> <body> <form id="f

js获取/设置任意元素中间内容的兼容方法

一.设置元素中间内容兼容代码 设置任意元素的中间文本内容兼容代码 /** * 设置任意元素的中间文本内容 * @param {*} element 标签元素 * @param {*} text 文本内容 */ function setInnerText(element,text){ if(typeof element.textContent === "undefined"){ element.innerText = text; }else{ element.textContent =

js获取屏幕以及元素宽高的方法

一.window相关 网页正文部分上:window.screenTop 网页正文部分左:window.screenLeft 屏幕分辨率的高:window.screen.height 屏幕分辨率的宽:window.screen.width 屏幕可用工作区高度:window.screen.availHeight 屏幕可用工作区宽度:window.screen.availWidth 二.body相关 网页可见区域宽:document.body.clientWidth 网页可见区域高:document.

JS获取HTML DOM元素的几种方法

目前我只知道下面这几种获取DOM元素的方法 根据ID获取元素     getElementById 根据标签名获取元素     getElementsByTagName 根据className获取标签列表     getElementsByClassName 根据选择器获取到第一个找到的元素     document.querySelector 根据选择器获取到所有的元素     document.querySelectorAll 还有两个特殊的获取标签方式: 获取html的方法 documen