Js怎么产生随机数?

JavaScript022

Js怎么产生随机数?,第1张

js可以用Math.random()函数产生随机数,这里以产生1到5之间的随机数为例。

1、产生最小到最大之间的函数,包括最小值和最大值,即“min ≤ r ≤ max”:

2、产生最小到最大之间的函数,包括最小值但不包括最大值,即“min ≤ r <max”:

3、产生最小到最大之间的函数,不包括最小值但包括最大值,即“min <r ≤ max”:

4、产生最小到最大之间的函数,不包括最小值和最大值,即“min <r <max”:

URL后面添加随机数通常用于防止客户端(浏览器)缓存页面。

浏览器缓存是基于url进行缓存的,如果页面允许缓存,则在一定时间内(缓存时效时间前)再次访问相同的URL,浏览器就不会再次发送请求到服务器端,而是直接从缓存中获取指定资源。URL后面添加随机数后,URL就不同了,可以看做是唯一的URL(随机数恰好相同的概率非常低,可以忽略不计),这样浏览器的缓存就不会匹配出URL,每次都会从服务器拉取最新的文件。

此方法同样适用于CDN缓存(通常是版本号而不是每次都变化的随机数,只有在版本更新后,URL的参数才会变)及服务端缓存屏蔽方法。

这是我以前写的,封装成独立函数,那个ran()是主要的,不过可能写得会有点乱,但是用是ok的,

"use strict"

var random, arr = [], random_oo, oo = 0

var r, a = 1, b = 1, c, n, num, k, result, m

/**

* 生成min到max之间的随机整数并返回。

* @param min

* @param max

* @returns {number}

*/

function ran_sc(min, max) {

random = Math.round(Math.random() * (max - min)) + min

return random

}

/**

* 生成唯一随机数需要,检测当前随机数与数组内所有数字重复情况。

* @param x 随机数

* @returns {number} 重复情况

* 唯一(数组内所有数字没有和x重复,返回0;

* 有重复,返回1。

*/

function csqian(x) {

oo = 0

for (var l = 0l <arr.lengthl++) {

if (x === arr[l]) oo = 1

}

return oo

}

/**

* 主调用函数。

* @param min 最小值

* @param max 最大值

* @param zushu 组数,要生成随机数的个数。

* @param chong_fu 是否重复,随便生成为true,生成唯一为false、

* @returns {Array} 随机数数组

*/

function ran(min, max, zushu, chong_fu) {

arr = []

if (chong_fu === true) {//随便

random = arrran(min, max, zushu)

return random

} else if (chong_fu === false) {//唯一

random = arrran_oo(min, max, zushu)

return random

}

}

/**

* 随便生成

* @param min

* @param max

* @param zushu

* @returns {Array}

*/

function arrran(min, max, zushu) {

for (var i = 0i <= (zushu - 1)i++) {

arr[i] = ran_sc(min, max)

}

return arr

}

/**

* 生成唯一随机数函数的判断选择。。

* @param min

* @param max

* @param zushu

* @returns {Array}

*/

function arrran_oo(min, max, zushu) {

if (zushu >(max - min + 1)) {

console.log(min)

console.log(max)

console.log(zushu)

alert("组数应不超过能生成的所有不一样的随机数的数目\n(即组数不超过(最大值-最小值+1))")

} else {

random = c_s(min, max, zushu)

return random

}

}

/**

* 生成唯一随机数

* @param min

* @param max

* @param zushu 组数

* @returns {Array}

*/

function c_s(min, max, zushu) {

for (m = 0m <= Infinitym++) {

if (m === zushu) break

random_oo = ran_sc(min, max)

if (csqian(random_oo) === 0) {

arr[m] = random_oo

} else if (csqian(random_oo) === 1) {

random_oo = ran_sc(min, max)

m -= 1

}

}

return arr

}

var r_ = ran(1, 1100, 10, false)

let INum = 0//这里是用户输入的数

let EP = -1

for (let i = 0i <r_.length++i) {

if (r_[i] === INum) EP = i

}

console.log("输入的数: " + INum)

console.log("生成随机数结果: " + r_.toString())

console.log("结果: " + EP)