js 随机函数

JavaScript023

js 随机函数,第1张

在写js中,我们经常遇见 js 随机函数,总结一下最近写验证码的时候  用到过的js 随机函数

Math.random()结果为0-1间的随机数(包括0,不包括1)

Math.floor( n )参数为Number 类型 ,函数结果 为num 的整数部分

Math.round( n ) ; 参数为Number 类型。函数结果 为num 四舍五入部分

Math.ceil( n )参数为Number类型。 函数结果为大于等于n的整数

Math.ceil(Math.random()*10) : 主要获取1到10的随机整数,取0的几率极小。

Math.round(Math.random()) : 可均衡获取0到1的随机整数

Math.round(Math.random()*10)  可基本均衡获取0到10的随机整数,其中获取最小值0和最大值10的几率少一半

Math.floor(Math.random()*10) 可均衡获取0到9的随机整数

例子:

    1. 实现一个 随机 汉字

         randomChi(){   // 随机生成汉字

                return `\\u${Math.round(Math.random() * 20901 + 19968 ).toString(16)}`

           }

    2. 实现一个n - m 的整数 ( 参照于 http://www.jb51.net/article/56019.htm )

        生成 n-m , 包含n 但不包含 m的整数

            第一步算出 m -n的值,假设等于 w 

            第二步 Math.random( )  * w

            第三步 Math.random() * w +n

            第四步 parseInt( Math.random() * w +n, 10)

         生成一个 n-m ,包含 m 但不包含 n的整数

            第一步算出 m-n的值,假设等于w

            第二步Math.random()*w

            第三步Math.random()*w+n

            第四步Math.floor(Math.random()*w+n) + 1

         生成一个不包含 n -m 但都不包含 n  和 m

             第一步算出 m-n-2的值,假设等于w

              第二步Math.random()*w

              第三步Math.random()*w+n +1

               第四步Math.round(Math.random()*w+n+1) 或者 Math.ceil(Math.random()*w+n+1)

            生成n-m,包含n和m的随机数:

                第一步算出 m-n的值,假设等于w

                第二步Math.random()*w

                第三步Math.random()*w+n

                第四步Math.round(Math.random()*w+n) 或者 Math.ceil(Math.random()*w+n)

             实例: 生成800-1500的随机整数,包含800但不包含1500

                1500-800 = 700

                Math.random()*700

                var num = Math.random()*700 + 800

                num = parseInt(num, 10)

更多实例 请查看  https://github.com/Mrangmaomao

直接调用如randomWord(1,6,10)产生6到10位的随机密码,如果要显示出来,要么alert(),要么显示到某个HTML元素中。下面给个简单示例,你可以保存为html文件后打开TEST 示例效果

简单代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>JS生成验证码</title>

<style type="text/css">

.code {

background-image: url(code.jpg)

font-family: Arial

font-style: italic

color: Red

border: 0

padding: 2px 3px

letter-spacing: 3px

font-weight: bolder

}

.unchanged {

border: 0

}

</style>

<script language="javascript" type="text/javascript">

var code//在全局 定义验证码

function createCode() {

code = ""

var codeLength = 6//验证码的长度

var checkCode = document.getElementById("checkCode")

var selectChar = new Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9,'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z')//所有候选组成验证码的字符,当然也可以用中文的

for (var i = 0i <codeLengthi++) {

var charIndex = Math.floor(Math.random() * 36)

code += selectChar[charIndex]

}

//alert(code)

if (checkCode) {

checkCode.className = "code"

checkCode.value = code

}

}

function validate() {

var inputCode = document.getElementById("input1").value

if (inputCode.length <= 0) {

alert("请输入验证码!")

} else if (inputCode != code) {

alert("验证码输入错误!")

createCode()//刷新验证码

} else {

alert("^-^ OK")

}

}

</script>

</head>

<body onload="createCode()">

<form action="#">

<input type="text" id="input1" /><input type="text" onclick="createCode()" readonly="readonly" id="checkCode" class="unchanged" style="width: 80px" /><br />

<input id="Button1" onclick="validate()" type="button" value="确定" />

</form>

</body>

</html>

注意别用在实际生产项目中