楼主: z74646
1123 0

[其他] Javascript的随机数,你知道几种?(二) [推广有奖]

  • 0关注
  • 1粉丝

本科生

75%

还不是VIP/贵宾

-

威望
0
论坛币
300 个
通用积分
0
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
890 点
帖子
55
精华
0
在线时间
12 小时
注册时间
2014-2-26
最后登录
2016-7-2

楼主
z74646 发表于 2016-4-25 12:51:18 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

之前和大家分享了一部分web前端开发(http://www.maiziedu.com/course/web-px/Javascript中的随机数,希望对大家有用。今天继续给大家案例。废话不多说,见下文:

随机洗牌

随机洗牌在JavaScript中是一个典型的算法,创建一个数组,通过洗牌算法,将结果放在一个新数组,然后每次弹出一个数组元素:

var numPool = [13, 21, 36, 14, 27, 10];

function shuffle (numPool) {

    for (var j, x, i = numPool.length; i; j = parseInt(Math.random() * i), x = numPool[--i], numPool = numPool[j], numPool[j] = x);

    return numPool;

}

var randomResult = shuffle(numPool);

while (randomResult.length > 0) {

    console.log(randomResult.pop());

}

上面的示例是在创建的数组中做随机排序,然后将数组的每个元素取出来。下面我们来看另一个示例,从一个范围内(比如 0~1000 )随机取 12 数,并将他们创建成一个数组,同时取出数组中最后一个子元素。

var numReserve = [];while (numReserve.length < 12) {

    var randomNumber = Math.ceil(Math.random() * 1000);

    var found = false;

    for (var i = 0; i < numReserve.length; i++) {

        if (numReserve === randomNumber) {

            found = true;

            break;

        }

    }

}if (!found) {

    numReserve[numReserve.length] = randomNumber;

}

随机密码

这些方法创建一个随机数字是足够了,但要使用 Math.random() 创建一个加密的随机安全密码是 指数数据计算方案 ,来避免这种错误:

function round(value, decimals) {

    return Number(Math.round(value+'e'+decimals)+'e-'+decimals);

}

round(1.005,2); // => 1.01

Epsilon( ε )舍入

在ES6中提供了另一种方法,处理小数四舍五入。 Machine epsilon 提供了一个合理的方法,比较两个浮点数合理处理这个误差。

在Chrome的控制台中输入:

0.1 + 0.2 // => 0.300000000000000040.1 + 0.2 === 0.3 // => false

通过 Math.EPSILON 函数可以做出一个正确的比较:

function epsEqu(x, y) {

    return Math.abs(x - y) < Number.EPSILON * Math.max(Math.abs(x), Math.abs(y));

}

Math.EPSILON 接受两个参数,一个是需要计算的表达式,另一个是需要做为比较的预期结果,然后用这两个值作为比较:

epsEqu(0.1 + 0.2, 0.3); // => true

如果有什么不对的地方,还希望大家多多指出,共同进步!


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Javascript script scrip Java scri 开发 元素

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 08:03