理解Excel的随机数:注意事项,使用技巧,真正的随机数 您所在的位置:网站首页 excel随机生成人名不重复 理解Excel的随机数:注意事项,使用技巧,真正的随机数

理解Excel的随机数:注意事项,使用技巧,真正的随机数

2023-06-14 07:25| 来源: 网络整理| 查看: 265

来E学会,学习不一样的Excel

这是之前写的一篇”理解Excel“系列里的文章,开始发在公众号上。现在搬运过来。

Excel提供了三个生成随机数的函数:RAND,RANDBETWEEN,RANDARRAY。

要用好这几个函数以及随机数,有一些事情应该了解。

随机数会重复:如何得到一组唯一的随机数

很多人会有一个潜意识中的误解,认为这些函数生成的随机数是唯一的。其实,这是没有任何保证的。

有时候一定会生成重复的随机数,比如,下面的公式:

这个公式生成1到10之间的整数,返回一个10行10列的数组,其中必然有很多是重复的:

即使你生成小数,甚至生成一个很大范围的小数,比如:

看上去没有重复的数值:

但是,这是没有保证的。实际上,只要你进行足够多的次数的重算,可以肯定一定会出现重复值。

所以,如果你希望得到不重复的随机数,可以使用UNIQUE函数:

但是,因为内层的RANDARRAY函数不保证唯一,所以UNIQUE函数返回的不一定是10个元素。如果要想得到10个不重复的随机数,可以加大随机数的范围,例如,将RANDARRAY的第4个参数从100变成1000000。基本可以保证得到10个不重复的记录。

可以将上面的公式改写为:

先用RANDARRAY生成一个比较大(1000行)的数组,随机数范围比较大。然后用UNIQUE函数取出其中的不重复结果,最后,使用CHOOSE函数返回其中的前10行。(这个方法可以保证取出的绝对不重复。但是不保证一定可以取出10个数值。如果没有10个不重复值,就会返回错误值)。

伪随机:如何得到真正的随机数

需要说明的是,Excel中的这三个函数生成的随机数都不是真正的随机数,而是伪随机数。实际上它们是通过一个复杂的算法来模拟随机数。如果你了解这个算法,你甚至可以预测下一个随机数是多少。(当然,这非常困难)。

真正的随机数一般是物理生成的,所以我们一般没有办法直接使用。有一个网站,

https://www.random.org/

号称可以生成真正的随机数。不过我没有研究过这个网站,因为它只能生成随机数,然后复制到Excel中,所以也不方便使用。

当然,实际中也没有太多非常需要真正的随机数的地方。(甚至,我个人都非常怀疑是否存在真正的随机数😀)。对于大部分应用来说,伪随机数就足够了。在Excel 2003之前,随机数的算法还是有点问题,不过之后的版本已经升级了算法,所以,可以放心地使用它们。不用关心是否真正的随机。

如果非要使用真正的随机数,这里有一个我认为不错的方法:使用NOW()函数。这个函数返回当前的时间,我们知道,时间就是数值:

我们可以将这个时间的最后几位作为随机数使用:

这个公式就可以返回0-100之间的随机的整数。

需要时生成随机,然后不再改变的方法

很多时候,我们对随机数的需求是间歇性的:需要时生成随机数,然后不再改变,就像扔骰子。

我们当然可以使用函数生成随机数,然后再粘贴成数值。但是这样做的话,下次需要随机数时,就需要重新写公式。

还有一种方法,就是写完随机数公式后,将计算方式改为手动。然后每次需要随机数的时候都重新计算。但是这种方法对其他的公式也有影响。

这里推荐大家使用Power Query。

在Excel中新建一个空查询,然后创建以下步骤:

你可以将这段代码复制到Power Query的高级编辑器中,然后点击完成。也可以自己按照上述代码添加各个步骤。具体请参见本公众号的Power Query相关文章。

实际上也是使用了M语言中的Number.Random和Number.RandomBetween两个函数。类似于Excel中的RAND和RANDBETWEEN函数。

结果如下:

分别生成了一列0-1之间的随机数和1到100之间的随机数。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有