使用JavaScript怎么生成指定范围随机数和随机序列

  介绍

这篇文章将为大家详细讲解有关使用JavaScript怎么生成指定范围随机数和随机序列,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

在JavaScript中我们经常使用math . random()方法生成随机数,但是该方法生成的随机数只是0 - 1之间的随机数。先看如下常用方法的特征:

? 1. math . random ();结果为0 - 1间的一个随机数(包括0,不包括1)

? 2. math.floor (num);全国矿工工会参数为一个数值,函数结果为num的整数部分。与取整数的方法(num)方法一样。

? 3. math.round (num);全国矿工工会参数为一个数值,函数结果为num四舍五入后的整数。

? 4. math.ceil (num);返回大于等于n的最小整数。

合理使用上述方法生成指定范围的随机数:

包含最小值不包含最大值的情况:

方法(num)取整,将传入的num向小的整数转化。将math . random()乘以最大和最小的差值,在用方法处理(注意此时的范围是【0 -差值)),再加上最小值,就能得到包括最小值但不包括最大值的整数。

,获取包含最小值但不包括最大值的随机数,用如下函数实现:

function  getRandom1(开始,结束),{   ,,,,,var  length =,最终获得成功;开始;   ,,,,,var  num =,方法(math . random(), *,(长度),+,开始);   ,,,,,return  num;   ,,,}

包括最大值但不包含最小值的情况:

<代码> Math.ceil (num) 取得大于等于num的最小整数,也就是将传入的num向大的整数转化。将math . random()乘以最大和最小的差值,在用Math.ceil()处理(注意此时的范围是(0 -差值】),在加上最小值,就能得到不包括最小值但包括最大值的整数。也就是将上面情况的方法改为Math.ceil ()

获取包含最大值但不包括最小值的随机数,用如下函数实现:

, function  getRandom1(开始,结束),{   ,,,var  length =,最终获得成功;开始;   ,,,var  num =, Math.ceil (math . random(), *,(长度),+,开始);   ,,,return  num;   以前,,}

最大值和最小值都包含的情况:

最大值和最小值都包含,此时可取值的范围相比于上述两种情况已经扩大1。在生成随机数阶段,就要将可能生成随机数的范围扩大1。使用方法用于向小的值取整可行,用Math.ceil (num)往大的值转化也可以(转化后需要1)。不管采用哪种方式,关键在于生成随机数阶段将范围加1。

采用方法的方法

function  getRandom1(开始,结束),{   ,,,var  length =,最终获得成功;start  +, 1;   ,,,var  num =,方法(math . random(), *,(长度),+,);   ,,,return  num;   以前,,}

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

一些时候,仅仅生成随机数是不够的,还需要将指定范围的数值,按照随机顺序排列。我们将这个问题转化为生成随机数后加入数组并避免重复的问题。每次循环顺序生成的数是随机的,按照顺序加入数组,以此实现数值大小的随机排列。

生成指定范围的随机数序列:

随机序列可直接通过那种排序方法实现,将一个包含一组按顺序排列的数字元素,调用这种方法,通过函数传入随机生成的值(可能为正可能为负),就可以将顺序打乱,得到该数组的随机序列。

如下:getNum()返回的是数字1 - 10按顺序排列的数组,则得到的numArr就是1 - 10的随机序列:

,, var  numArr =, getNum () .sort (function  (), {   ,,,,,,,return  math . random(),今天早上,0.5;   ,,,,,});

自己写逻辑生成随机序列也是可行的:

定义存储随机数的数组,然后循环生成随机数,生成之后到已有数组中查找,如果存在,将标记变为假表示产生的随机数重复,根据标记值来决定是否加入数组。若加入数组成功,则数组下标指数(表示数组元素个数)自增,满足条件退出循环。下面例子实现5 - 10之间的随机序列(下面案例是左右包含的):

function  getOrder(开始,结束),{   ,,,,,var  length =,最终获得成功;开始;   ,,,,,var  myorder =, new 数组();   ,,,,,var  index =, 0;   ,,,,,while  (index  & lt;,长度+ 1),{   ,,,,,,,var  flag =,真的;   ,,,,,,,var  num =,方法(math . random(), *,(时间+ length  1));   ,,,,,,,for  (var 小姐:myorder拷贝),{   ,,,,,,,,,if  (myorder[我],==,num), {   ,,,,,,,,,,,flag =,假;   ,,,,,,,,,}   ,,,,,,,}   ,,,,,,,if  (flag ==,真的),{   ,,,,,,,,,myorder(指数),=,num;   ,,,,,,,,,指数+ +;   ,,,,,,,}   ,,,,,}   ,,,,,警报(myorder.length);   ,,,,,警报(myorder);   ,,,}   getOrder (5, 10);

使用JavaScript怎么生成指定范围随机数和随机序列