Menu

Excel 随机数:RAND、RANDBETWEEN、RANDARRAY

=RANDBETWEEN(1,100) 返回 1 到 100 之间的随机整数,=RAND() 返回大于等于 0 且小于 1 的随机小数。RANDARRAY 可以填满整个区域,INDEX 配合 RANDBETWEEN 能随机抽取一项,选择性粘贴 > 值 可以固定结果。

本页的每张表格都是实时的:修改数字或公式,就会重新计算。

=RANDBETWEEN(1,100) 返回 1 到 100 之间的随机整数,两端都包含在内。=RAND() 返回一个大于等于 0 且小于 1 的随机小数。每次表格重新计算时,两者都会给出新的数字。

随机数
B2
AB
1FormulaResult
2Decimal 0 to 10.256679579
3Whole 1 to 10024
4Die roll4
5CoinTails
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

编辑任意单元格(例如在 A6 中输入一个词),所有结果都会改变。在 Excel 中,工作簿任何地方的每次编辑都会这样,按 F9 则会强制生成一组新数字。你在这里看到的数字和其他读者看到的并不相同。

RAND 与 RANDBETWEEN 语法

=RAND()
=RANDBETWEEN(bottom, top)

RAND 没有参数,但空括号必须写。RANDBETWEEN 接收它可以返回的最小和最大整数;如果 bottom 大于 top,返回 #NUM!。

两个值之间的随机数

RANDBETWEEN 只返回整数。要在某个范围内生成随机小数,就对 RAND 做缩放:乘以范围的宽度,再加上最小值。外面套一层 ROUND 可以保留两位小数。

指定范围内的随机值
D2
ABCD
1MinMaxKindRandom value
21050Whole46
31050Decimal49.74
42026-01-012026-12-31Date2026-09-04
5-55Whole-5
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

修改 A 列和 B 列中的最小值和最大值,结果会保持在新的范围内。日期在 Excel 中是整数,所以在两个日期之间用 RANDBETWEEN 会返回一个随机日期;把单元格设置为日期格式(开始 > 数字格式 > 短日期),否则会显示序列号。负数边界也同样适用。

RANDARRAY:一次生成多个随机数

在 Excel 365 和 Excel 2021 中,=RANDARRAY(rows, columns, min, max, whole_number) 从一个单元格填满整个区域。所有参数都是可选的:=RANDARRAY(5) 会在一列中向下给出 5 个 0 到 1 之间的小数。

RANDARRAY 溢出一整块数字
A2
ABCD
1Whole numbers 1 to 100Decimals 0 to 1
26423310.040617832
38389550.480702855
49578920.305043489
5436920.133745562
64473640.581903097
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

A2 用整数填满 A2:C6(最后一个参数 TRUE 表示要整数;省略则生成小数)。Excel 2019 及更早版本没有 RANDARRAY:在一个单元格中写 =RANDBETWEEN(1,100),再把它填充到整个区域。

从列表中随机抽取一项

要随机抽取一个名字、产品或问题,先用 RANDBETWEEN 随机选一个位置,再用 INDEX 返回该位置上的项目。COUNTA 统计名字的个数,所以区域可以超出列表、延伸到空行:在下方添加名字后,=INDEX(A2:A100,RANDBETWEEN(1,COUNTA(A2:A100))) 依然有效。

随机抽取获奖者
C2
ABC
1NameWinner
2AnaFinn
3Ben
4Cleo
5Dan
6Eve
7Finn
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

每个名字被抽中的概率相同,都是六分之一。两个使用这个公式的单元格可能抽到同一个名字;如果要抽出几个不同的获奖者,应该先打乱列表(见下一节),再取最上面几行。

打乱列表与不重复的随机数

=SORTBY(A2:A7,RANDARRAY(6)) 按六个随机数对列表排序,于是列表变成随机顺序。因为每一项只出现一次,结果永远不会重复,这是在 Excel 365 和 2021 中抽取多个不同名字或数字的标准方法。

打乱的列表与 1 到 20 中 3 个不同的数
C2
ABCDE
1NameShuffled3 of 1 to 20
2AnaFinn8
3BenBen3
4CleoAna12
5DanCleo
6EveEve
7FinnDan
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

E2 把 SEQUENCE 生成的 1 到 20 打乱,再用 TAKE 保留前三个,所以这三个数总是互不相同。TAKE 需要 Microsoft 365 或 Excel 2024;在 Excel 2021 中写 =INDEX(SORTBY(SEQUENCE(20),RANDARRAY(20)),SEQUENCE(3))。在 Excel 2019 中,在列表旁的辅助列里放 =RAND(),再用 数据 > 排序 按该列对列表排序。

动手试试:自己缩放随机值

RANDBETWEEN 就是把 RAND 缩放到某个范围再截成整数。这里 B2 中是 RAND 曾经返回的一个值,已经粘贴为值,所以不会再变化。

把 RAND 的值变成整数
C2
ABCDE
1ItemRAND valueWhole numberMinMax
2Draw 10.372512
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: B2 中是 RAND 返回的值。在 C2 中像 RANDBETWEEN 那样把它变成从 D2 的最小值到 E2 的最大值(两端都包含)之间的整数:乘以可能取到的数的个数,用 INT 去掉小数,再加上最小值。

提示:从 5 到 12 共有 E2-D2+1 个可能的数,也就是 8 个。

常见错误:用过之后结果又变了

如果随机抽取的结果在下一次编辑时就变了,它就无法用来记录谁中了奖,或哪些行进入了样本。得到想要的数字后,就把它们转换成值:

  1. 选中这些单元格并复制(Ctrl+C,Mac 上是 Cmd+C)。
  2. 开始 > 粘贴 > 值。Windows 上依次按 Ctrl+Alt+V、V、Enter;Mac 上按 Ctrl+Cmd+V 并选择“值”。

如果只有一个单元格,按 F2 进入编辑,按 F9 把公式替换为当前结果,再按 Enter。如果每次都需要同样的“随机”数字,比如用于测试或课堂练习,Excel 没有种子参数:只需粘贴一次值并保留那张工作表。RAND 适合用于抽样、游戏和测试数据,但不适合用于密码或任何与安全相关的场景。

常见问题

Excel 中如何生成两个数之间的随机数?

整数用 =RANDBETWEEN(10,50),10 和 50 都可能出现。小数用 =RAND()*(50-10)+10,在 Excel 365 或 2021 中也可以用 =RANDARRAY(1,1,10,50)。

Excel 中如何让随机数不再变化?

用值替换公式:复制这些单元格,然后选择 开始 > 粘贴 > 值。Windows 上依次按 Ctrl+Alt+V、V、Enter 效果相同;Mac 上按 Ctrl+Cmd+V 打开“选择性粘贴”,在其中选择“值”。如果只有一个单元格,按 F2,再按 F9(某些笔记本上是 Fn+F9),然后按 Enter。

Excel 中如何从列表中随机抽取一个名字?

用 =INDEX(A2:A7,RANDBETWEEN(1,COUNTA(A2:A7)))。COUNTA 统计名字的个数,RANDBETWEEN 随机选一个位置,INDEX 返回该位置上的名字。

Excel 中如何生成不重复的随机数?

把一个序列打乱,再取前几个:在 Excel 365 中,=TAKE(SORTBY(SEQUENCE(50),RANDARRAY(50)),6) 给出 1 到 50 之间 6 个互不相同的数。Excel 2021 没有 TAKE,可以用 =INDEX(SORTBY(SEQUENCE(50),RANDARRAY(50)),SEQUENCE(6))。在多个单元格中使用 RANDBETWEEN 可能会出现重复。

Excel 中如何生成随机日期?

用 RANDBETWEEN 配合两个日期:=RANDBETWEEN(DATE(2026,1,1),DATE(2026,12,31)) 返回 2026 年中随机的一天。把单元格设置为日期格式,否则它会显示日期的序列号。

Coddy 编程语言插图

和 Coddy 一起学编程

开始