对于生成几个互不相同的随机数应用的还挺广泛的,接触js还没多长时间,给大家分享两种方法来生成不重复的随机数。
1.使用indexOf方法巧妙的实现
代码示例如下:
使用while循环语句控制随机数的个数,首先定义一个arr数组作为一个容器承载随机数,运用Math.random()*10生成1~10的随机数,使用indexOf方法去除相同的随机数。indexOf方法返回第一次出现子字符串的字符位置,它返回的是一个整数值,当返回值为-1时,表示没有此字符串。所以arr.indexOf(num) == -1的意思是当arr中没有此字符的时候将随机数存入arr中,能实现生成5个不同的随机数。
此外给大家分享一个在max(最大数)和min(最小数)范围之间的随机数公式:
var ran = Math.random()*(max-min)+min;
2.使用while循环来实现
示例代码如下:
定义五个变量a,b,c,d,e承接生成的五个随机数,使用while循环来实现,大体思路如下:随机数a作为第一个数,第二个while循环是:当a == b; b在重新生成随机数直到与a 不同时,保存b; 第三个while循环是:当c与a,b其中一个相同时,重新生成随机数c,直到c与a,b都不相同时,保存c;以此类推;实现每个随机数都互不相同。
这种方法是我才学js的几个循环时根据自己的逻辑写出来,虽然也能实现效果,但没有第一种方法好,第一种方法一是代码量少,还有适用范围广,像第二种当需要生成的随机数过多时就不适用。