用公式生成不重复的随机数字
在某些场合我们需要生成一组不重复的随机数字,提到随机,我们肯定能想到
RANDBETWEEN函数,当然这个函数是可以生成一定范围的随机数,但是我们运行一下会发现生成的数字有重复的,那么如何用公式生成不重复的随机数字呢?现在假如我们想要生成1-6之间的随机数,可以在A2单元格中输入如下公式:
=SMALL(IF(COUNTIF(A$1:A1,ROW($1:$6)),"",ROW($1:$6)),RANDBETWEEN(1,6-COUNT(A$1:A1)))
由于有数组,所以要三键(Ctrl+Shift+Enter)完成输入,得到如下结果:
请仔细注意上面公式的参数噢,由于这里只设置了1-6之间的随机数字,那么最多可以把公式下拉到A7单元格才能保证不出错,结果如下:
在实际情况下,请自行根据自己的需要设置随机数字的区间范围,然后在公示里修改一下就行啦~例如想要生成1-14之间的随机数,则A2单元格中的公式修改如下:
=SMALL(IF(COUNTIF(A$1:A1,ROW($1:$14)),"",ROW($1:$14)),RANDBETWEEN(1,14-COUNT(A$1:A1)))
当然这是建立在你完全理解这个公式的基础上,这里小编只说下大概的原理:
1、IF(COUNTIF(A$1:A1,ROW($1:$14)),"",ROW($1:$14)):这句是把已经出现的数字排除掉,留下还未出现的数字以供后续选择。
2、RANDBETWEEN(1,14-COUNT(A$1:A1)):这句是生成一个随机数字,这个随机数字最大为总“共要生成的随机数个数-已经生成的随机数个数”。
3、SMALL:SMALL函数是用来在IF函数保留后的随机数中选择一个最小的随机数,之所以用SMALL函数,纯粹是为了在保留的随机数里面选择一个数而已,你也可以换成MAX函数,事实上只要你能在IF函数保留后的随机数中选择一个随机数的话,你也可以用其他的函数来完成,主要是你要理解原理噢。
有人说了,现在假如说想要生成[6,9]之间的数字怎么办呢?我们根据公式的运行机制其实可以很快地更改一下参数就行,在A2单元格中输入如下公式即可:
=SMALL(IF(COUNTIF(A$1:A1,ROW($6:$9)),"",ROW($6:$9)),RANDBETWEEN(1,4-COUNT(A$1:A1)))
是不是很神奇呢,慢慢消化一下吧!