js的随机函数总结

295 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第2天,点击查看活动详情

前言

随机函数是我们写h5小游戏或者写获取随机的重要东西,也是菜小白一直没有太懂的东西,所以今天就来总结学习一下随机函数的用法。

一般来说计算机不会产生绝对随机的随机数,计算机只能产生“伪随机数”。其实绝对随机的随机数只是一种理想的随机数,即使计算机怎样发展,它也不会产生一串绝对随机的随机数。计算机只能生成相对的随机数,即为随机数。

真随机的特性: 真随机数是伴随着物理实验的,比如:抛硬币、掷骰子、电子元件的噪音、核裂变等,它的结果符合三大特性的。

伪随机的特性: 伪随机数是通过一定算法,获得一个随机的值,并不是真的随机。伪随机又分为强伪随机数和弱伪随机数。强伪随机数:更加贴近真随机数,满足特性的。随机性和不可推测性,难以预测。弱伪随机数:满足随机性,可以预测。

1,生成 [ 0, 1 ) 范围内的随机数(大于等于0,小于1)

使用 random() 方法可以返回一个介于 0 ~ 1 之间的伪随机数(包括 0,不包括 1)。

Math.random()

2,生成 [ a, b ) 范围内的随机数(大于等于n,小于m)

这种最简单,只需使用如下公式就可以:

Math.random()*(b-a)+a

3,生成 (x,y)范围内的随机数

因为 random 的特点,需要借助一些判断才可以取到浮点数。

//取得[x,y]范围随机数
function fullClose(x,y) {
   var result = Math.random()*(y+1-x)+x;
   while(result>y) {
       result = Math.random()*(y+1-x)+x;
   }
   return result;

此种方法会取到浮点数,如果运用到小游戏等上面随机的话就比较麻烦

4.生成 [ 1, x ] 范围内的随机整数(大于等于1,小于等于n)

下面方法生成一个 1 到 n 的随机整数

Math.floor(Math.random()*x)+1