课程
随机数在 Excel 中应用广泛,例如用于模拟与假设检验。本文将带您逐步了解生成随机数的不同方法。我们先从 RAND() 和 RANDBETWEEN() 等基础函数开始,再介绍更高级的 RANDARRAY()。读完后,您将清楚地知道如何使用这些函数,以及在不同场景下如何进行选择。
Excel 随机数函数概览
Excel 可以生成介于 0 和 1 的小数、位于某个区间的整数,甚至是整张随机数表。我们来看三种实现方式:
RAND() 函数
RAND() 函数返回介于 0 与 1 之间的随机小数。它是一个重要函数,因此我们也将其收录在人人都该掌握的 15 个 Excel 基本公式中。
要生成 0 到 1 之间的随机小数,只需在任意单元格输入 =RAND()。如果需要更多随机数,可以拖动填充到其他行。

使用 RAND() 生成随机数。图片来源:作者。
您还可以用 RAND() 生成不同类型的数值,例如:
-
生成特定范围内的随机数:使用公式
RAND() * N。其中N可为任意值。 -
在任意两数之间生成随机数:使用公式
RAND() * (b - a) + a.其中b为上限,a为下限。结果始终小于b值。 -
生成整数而非小数:将上述公式再套入
INT()函数。
=RAND()*100
=RAND()*(20-10)+10
=INT(RAND()*(20-10)+10)

使用 RAND() 生成随机整数。图片来源:作者。
需要注意的是,每当表格有新输入时,这些数值都会更新。如果您想固定这些数值,请使用选择性粘贴 > 数值(后文还会提到)。
RANDBETWEEN() 函数
RANDBETWEEN() 用于在给定范围内生成随机整数。其语法为:
=RANDBETWEEN(bottom, top)
bottom 表示下限,top 表示上限。
例如,若我想生成 10 到 20 之间的整数,可以使用如下公式:
=RANDBETWEEN(10,20)

使用 RANDBETWEEN() 生成随机数。图片来源:作者。
您会注意到,使用 =INT(RAND()*(20-10)+10) 也能得到相同结果。但我更偏好 RANDBETWEEN(),因为它是为此类任务而设计的、更简洁的 RAND() 升级版。用 RAND() 想在两值之间得到随机整数,需要写较长的公式;而有了 RANDBETWEEN(),一步即可完成。
RANDARRAY() 函数
RANDARRAY() 在 Excel 365 中引入。它返回一组随机数,允许我们指定要填充的数值数量、行数与列数——无需拖动公式——并可选择返回小数或整数。
=RANDARRAY([rows],[columns],[min],[max],[whole_number])
含义如下:
-
rows指要填充的行数。 -
columns指要填充的列数。 -
min指定下限。 -
max指定上限。 -
whole_number设为TRUE返回整数,设为FALSE(或留空)返回小数。
来看一个实际示例。假设我想在 4 列 × 6 行的区域内生成 10 到 20 的随机小数,公式为:
=RANDARRAY(6,4,10,20)
若要生成整数,公式为:
=RANDARRAY(6,4,10,20,TRUE)
这样,每次刷新工作表都会生成新的数值。

使用 RANDARRAY() 生成随机数。图片来源:作者。
各函数的快速对比
以下是三种函数的快速对比:
| 特性 | RAND() | RANDBETWEEN() | RANDARRAY() |
|---|---|---|---|
| 输出类型 | 小数 | 指定范围内的整数 | 小数或整数 |
| 是否可指定范围 | 否 | 是 | 是 |
| 是否可一次返回多值 | 否 | 否 | 是 |
| 适用版本 | 所有版本(Excel 365 - 2000) | Excel 365 - 2007 | Excel 365 - 2021 |
Excel 随机数生成器的特定用法
下面通过几个实际示例,看看随机数生成器可用于哪些场景。
生成不重复的随机数
有时我们需要生成不重复的随机数。虽然 Excel 没有直接的单一函数,但可以组合两种方法:
-
RAND()与RANK.EQ()搭配 -
RANDARRAY()与UNIQUE()搭配
假设我需要 10 个不重复的随机数。首先在A2 单元格输入 RAND() 生成随机数,并向下拖动至A10。然后在B2 中,为得到唯一值,输入以下公式:
=RANK.EQ(A2,$A$2:$A$10)

使用 RANK.EQ() 生成不重复随机数。图片来源:作者。
另一种方式是将 RANDARRAY() 套入 UNIQUE()。下面我用该公式生成 1 到 20 的 10 个不重复随机数:
=UNIQUE(RANDARRAY(10,1,1,20,TRUE))
使用 UNIQUE() 与 RANDARRAY() 生成随机数。图片来源:作者。
注意:UNIQUE() 与 RANDARRAY() 仅适用于 Excel 365 和 2021。想保持与时俱进,可学习我们的 Excel Fundamentals 路线。
按特定分布生成数值
Excel 也能按特定分布生成随机数,例如正态分布,这在进行蒙特卡罗模拟时很有用。您可以使用 NORM.INV()。
=NORM.INV(probability, mean, standard deviation)
其中:
-
probability为 0 到 1 之间的随机小数(RAND())。 -
mean为数值应聚集的均值。 -
standard deviation 表示数值围绕均值上下波动的幅度。
例如,我想为一班学生生成随机测验分数,设定平均分为 75。大多数学生在均值上下 10 分内(即分数大多介于 65 到 85)。于是我对所有行应用如下公式:
=NORM.INV(RAND(), 75, 10)

使用 NORM.INV() 生成正态分布。图片来源:作者。
数据匿名化与测试
我们还可以用随机数替换敏感数据(如账号或电话号码),用于测试或数据隐私保护。
如下有一组账号,我想匿名化账号的前四位数字,于是用以下公式将其替换为一般性的随机数字:
=REPLACE(A2,1,4,RANDBETWEEN(1,4))

用随机数隐藏敏感数据。图片来源:作者。
辅助快速决策
这或许出乎意料,但我们也可以用随机数来快速决策。比如,要从一长串名单中随机抽取一名获奖者,可在给定范围中随机提取姓名。
下面,我在 A2 到 A10 单元格有一份抽奖名单,需要选出一位获奖者。为此,我在 C2 输入以下公式,即可随机选出一人:
=INDEX(A2:A10, RANDBETWEEN(1, 11))

随机选出一位获奖者。图片来源:作者。
如何防止随机数重新计算
随机数的一个问题在于,只要工作表更新,它们就会变化。如果您想固定这些数值,可将其转换为静态值。有两种方法:
- 选中随机数区域,按Ctrl + C复制,然后右键选择选择性粘贴 > 数值。
- 若仅想停止某个单元格的重新计算,选中该单元格并在编辑栏按F9。
了解 Excel 的随机数算法
如果您好奇 Excel 随机数函数的底层原理,这里简单介绍一下。
自 Excel 2010 起,Microsoft Excel 使用梅森旋转(Mersenne Twister)算法来生成随机数。它能产生通过多种统计检验的高质量随机数。最常用的版本之一是 MT19937,基于一种称为梅森素数的特殊质数。
在采用 Mersenne Twister 之前,曾使用过中平方法(middle-square method)。该方法将一个数平方,并取其中间位数作为随机数。尽管由天才约翰·冯·诺依曼提出时颇具巧思,但后来发现其会产生模式,甚至可能陷入重复,故被 Mersenne Twister 所取代。
结语
本文介绍了在 Excel 中生成随机数的多种方式:从用 RAND() 生成小数,到用 RANDBETWEEN() 生成整数,再到用 RANDARRAY() 生成整表的随机值。
若想进一步学习如何在 Excel 中处理数据,请查看我们的 Data Preparation in Excel 与 Data Visualization in Excel 课程。此外,点击下方的 Excel Fundamentals 路线——无需任何基础。
我是内容策略专家,热衷于将复杂主题化繁为简。我曾帮助 Splunk、Hackernoon 和 Tiiny Host 等公司为其受众打造兼具吸引力与信息量的内容。
