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)