百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

教你在 Excel 中生成随机数的 5 种方法

moboyou 2025-09-14 22:51 12 浏览

Excel 中的随机数并非是每个用户都需要的功能 ,大多数人的数据都会使用固定数字和公式,可能不需要在他们的报告中出现随机数。

财务模型可以使用依赖于概率的随机模拟,有些数据模型可能需要运行数千次,但随机数生成器会提供每次模拟的参数。

无论您需要怎么样的随机数,Excel 都有多种生成它们的方法。

在这篇文章中,我将向您展示可用于将随机数插入到工作簿中的各种方法。

1/ 使用 RAND 函数生成随机数

我将向您展示的第一种方法是在 Excel 中生成随机值的最简单方法。

Excel中有一个非常简单的RAND函数,它不需要参数,会生成一个 0 到 1 之间的随机数。

RAND 函数示例:

= RAND ( )

此函数没有必需或可选的参数。该函数始终以一组空括号输入。此函数将生成一个介于 0 和 1 之间的随机小数,但不包括 0 或 1

有可能会存在重复值,但是概率会比较低,因为在0和1之间的小数是太多了。返回的值将遵循均匀分布。这意味着 0 和 1 之间的任何数字都有可能被返回。

使用RAND()在任意两个数字之间生成随机数:

可以使用RAND()函数的简单公式在任意两个数字之间生成随机数。

= RAND ( ) * ( Y - X ) + X

这样就可以在 X 和 Y 之间创建一系列随机数。

在任意两个数字之间生成随机整数:

有时,我们遇到的需求是在两个给定数字之间生成随机整数。这也可以使用一个简单的公式来完成。

= ROUND ( RAND ( ) * ( Y - X ) + X, 0 )

即使用 ROUND 函数对RAND函数的结果进行四舍五入到零小数位

可以将这个公式复制到电子表格的列中,如果您一直按 F9 重新计算,您将看到从 1 到 10 的各种数字组合

但是由于整数数字是离散的,生成的随机数很可能在列表中重复,这取决于生成随机范围的最小值和最大值。

= ROUND ( RAND ( ) * ( 4 - -3 ) + -3, 0 )

这也适用于产生负数。假设需要生成-3到4之间的随机整数,那么上面的公式就是你所需要的

将 RAND 函数乘以 7 将产生 0 到 7 之间的随机数。将 -3 添加到结果并四舍五入到零小数位,这将给出 -3 到 4 的随机整数范围。

2/ 使用 RANDBETWEEN 函数生成随机数

这个函数相对比使用 RAND 函数更容易使用,因为它包含额外的运算符来达到需要的特定随机数范围。

RANDBETWEEN 函数的语法:

= RANDBETWEEN ( bottom, top )
  • bottom 是返回值的下限
  • top 返回值的上限 函数将在下限值和上限值之间生成随机整数

RANDBETWEEN 函数示例:

= RANDBETWEEN ( -3, 4 )

请注意,RANDBETWEEN 函数只能生成整数。没有办法让函数产生小数。然而,它比 RAND 函数来实现相同的结果要简单得多。

3/ 使用 RANDARRAY 函数生成随机数

部分情况下,可能不仅需要单个随机值,还需要一组随机值。RANDARRAY 函数是对此的完美解决方案。它将用一组随机数填充一系列单元格,不过此功能仅适用于 Microsoft 365 版本的 Excel

RANDARRAY 函数的语法:

= RANDARRAY ( [rows], [columns], [min], [max], [whole_number] )
  • rows是要返回的行数
  • columns 是要返回的列数
  • min 是随机数的最小值
  • max是随机数的最大值
  • whole_Number为 TRUE 返回整数,FALSE 返回小数

此函数的所有参数都是可选的。如果不包含任何参数,将获得一个带随机小数,与 RAND 函数的结果相同

RANDARRAY 函数示例:

= RANDARRAY ( 4, 3, 6, 14, TRUE )

要生成 4 行 3 列的 6 到 14 之间的整数随机数数组,您可以使用上述公式。这将产生一个数组。注意到数字周围的蓝色边框了吗?这些都是由1个公式产生的

请注意,数组的左上角始终锚定在公式所在的单元格上。按 F9 重新计算电子表格将更改数组中的所有数字

  • 如果没有输入最小值或最大值,则将使用默认值 0 到 1。
  • 最小值必须小于最大值,否则会出现#VALUE!错误。
  • 如果更改了RANDARRAY公式中的行或列参数,数组将自动调整大小。这就是它们被称为动态数组公式的原因

注意:如果输入的输出范围内的一个单元格中已经有了数据,将收到#SPILL!错误,同时不会覆盖任何已有数据

4/ 使用分析工具插件生成随机数

还有另一种方法可用于在不使用公式的情况下插入随机数。可以使用加载项来创建随机数。Excel 附带一个分析工具库加载项,但您需要先安装它才能使用它

1/ 单击功能区中的 文件 选项卡

2/ 在窗口的左下方窗格中,向下滚动并单击 选项

3/ 在弹出窗口的左侧窗格中,单击加载项

4/ 勾选 分析工具库,单击确定

5/ Excel 功能区的“数据”选项卡上,现在有一个名为“分析”的组,就可以看到到“数据分析”的选项

使用分析工具包生成随机数:

可以在其中输入参数以生成随机数

  • 变量数:这是输出表中所需的随机数列数。如果留空,则所有列都将填充在您指定的输出范围内
  • 随机数:这是要生成的随机数的行数。如果留空,指定的输出范围将被填充
  • 分布:可以从下拉列表中选择多种分布方法,例如均匀分布或正态分布。根据在此处的选择,参数部分将提供不同的选项
  • 参数:输入值以表征选定的分布
  • 随机种子:这是可选的,将是算法产生随机数的起点。如果再次使用相同的种子,它将产生相同的随机数。如果留空,它将从计时器事件中获取种子值
  • 输出区域:输入要在电子表格中构建表格的位置的左上角单元格。如果您将变量参数留空,则需要指定整个区域。请注意,该区域内的现有数据将被覆盖
  • 新建工作表:此选项将在工作簿中插入一个新工作表并将结果粘贴到单元格 A1单元格,在相邻的框中输入工作表名称,否则将使用默认名称
  • 新建工作簿:这将创建一个新工作簿并将结果粘贴到第一张工作表的单元格 A1 单元格中

5/ 用 VBA 生成随机数

VBA(Visual Basic for Applications)是位于 Excel 前端的编程语言,也可用于生成随机数。但是,它比简单地在 Excel 中的单元格中输入公式要复杂,而且需要一些编程知识才能使用它

要打开 VBA 编辑器,请使用Alt + F11键盘快捷键

在窗口(项目资源管理器)的左侧窗格中,将看到打开的工作簿(包括加载项)和可用的工作表

在窗口顶部的菜单上,单击“插入”,然后单击“模块”。这将向当前电子表格添加一个模块窗口。将以下代码粘贴或添加到模块中

Sub RandomNumber()
    MsgBox Rnd()
End Sub

按F5运行它,Excel 中将出现一条消息弹出窗口,并显示一个随机数。点击确定,您将返回代码窗口。

再次运行代码,将显示不同的随机数。随机数将介于 0 和 1 之间,但不包括 0 或 1 的值。

还可以为Rnd函数提供一个参数,该参数是用于生成随机数的算法起点的种子。如果种子值设置为负数或零,则每次将显示相同的随机数。

例如,如果您想生成 3 到 10 之间的完整随机数,则可以使用以下代码。此代码将随机数乘以 7,然后将其加 3,然后四舍五入到小数点零位。假设您想在单元格中显示您的随机数。您可以使用以下代码执行此操作

Sub RandomNumberSheet()
Dim M As Integer
For M = 1 To 5
    ActiveSheet.Cells(M, 1) = Round((Rnd(10) * 7) + 3, 0)
Next M
End Sub

还有一个名为Randomize的 VBA 函数。可以在Rnd函数之前使用它来将种子值重置为计时器事件或任何给定的参数

Sub RandomNumberV2()
    Randomize (10)
    MsgBox Round((Rnd() * 7) + 3)
End Sub

6/ 生成不重复的随机数

可能会遇到这样一种情况:想生成一系列随机数,但又不想看到任何重复值出现。

可能希望从 1 到 10 的数字之间选择 3 个随机数,但其中 3 个所选数字中的每一个都是唯一的。

有几种可能的解决方案:

RANK.EQ 和 COUNTIF 函数的解决方案:

先使用RANDBETWEEN创建随机数,然后使用下一列中的公式对它们进行排名,从而从 1 到 10 的随机排序序列

= RANDBETWEEN ( 1, 10 )

然后,可以使用RANK.EQ函数对它们进行排名,以创建一个从 1 到 10 的序列,该序列是随机排序的

= RANK.EQ ( B2, $B$2:$B$11 ) + COUNTIF ( $B$2:B2, B2 ) - 1

注意,公式使用了绝对引用($符号),以便在向下复制公式时公式引用保持固定

用 VBA 解决:

还可以使用 VBA 生成一串从 1 到 10 的无重复随机数

Sub RandomNumberNoDuplicates()
Dim M As Integer, Temp As String, RandN As Integer
For M = 1 To 5
Repeat:
    RandN = Round((Rnd(10) * 9) + 1, 0)
    If InStr(Temp, RandN) Then GoTo Repeat
    ActiveSheet.Cells(M, 1) = RandN
    Temp = Temp & RandN & "|"
Next M
End Sub

代码迭代从 1 到 5 的值,每次生成 1 到 10 之间的随机数。

它测试随机数以检查它是否已经生成。这是通过将成功的数字连接成一个字符串然后搜索该字符串以查看该数字是否已被使用来完成的。

如果已找到,则它使用标签重复返回并重新生成一个新号码。再次测试它尚未使用。如果是新号码,则将其添加到工作表中

动态数组的解决方案:

假设要从序列 1 到 10 中返回 5 个数字。您希望每个选择的数字都是唯一的。这可以使用SEQUENCE、SORTBY、RANDARRAY和INDEX函数的组合来完成

=INDEX(
    SORTBY(
        SEQUENCE(10),
        RANDARRAY(10)
    ),
    SEQUENCE(5)
)

上面的公式创建了一个从 1 到 10 的数字序列

然后使用SORTBY函数以随机顺序对它们进行排序,并对RANDARRAY函数生成的随机数列进行排序。效果是按随机顺序对序列进行排序。

现在,如果想获得 5 个随机且唯一的数字,只需从随机排序的序列中取出前 5 个数字。这正是INDEX函数所做的!这部分公式将从随机排序的序列中返回前 5 个数字

结论

在 Excel 中有多种生成随机数的方法。无论您需要整数、小数还是具有上限和下限的随机数范围,都可用Excel来生成。

但是,请记住,这些数字是由算法生成的伪随机数。尽管随机数生成器通过了所有随机性测试,但它们并不是真正的随机数

相关推荐

Excel技巧:SHEETSNA函数一键提取所有工作表名称批量生产目录

首先介绍一下此函数:SHEETSNAME函数用于获取工作表的名称,有三个可选参数。语法:=SHEETSNAME([参照区域],[结果方向],[工作表范围])(参照区域,可选。给出参照,只返回参照单元格...

Excel HOUR函数:“小时”提取器_excel+hour函数提取器怎么用

一、函数概述HOUR函数是Excel中用于提取时间值小时部分的日期时间函数,返回0(12:00AM)到23(11:00PM)之间的整数。该函数在时间数据分析、考勤统计、日程安排等场景中应用广泛。语...

Filter+Search信息管理不再难|多条件|模糊查找|Excel函数应用

原创版权所有介绍一个信息管理系统,要求可以实现:多条件、模糊查找,手动输入的内容能去空格。先看效果,如下图动画演示这样的一个效果要怎样实现呢?本文所用函数有Filter和Search。先用filter...

FILTER函数介绍及经典用法12:FILTER+切片器的应用

EXCEL函数技巧:FILTER经典用法12。FILTER+切片器制作筛选按钮。FILTER的函数的经典用法12是用FILTER的函数和切片器制作一个筛选按钮。像左边的原始数据,右边想要制作一...

office办公应用网站推荐_office办公软件大全

以下是针对Office办公应用(Word/Excel/PPT等)的免费学习网站推荐,涵盖官方教程、综合平台及垂直领域资源,适合不同学习需求:一、官方权威资源1.微软Office官方培训...

WPS/Excel职场办公最常用的60个函数大全(含卡片),效率翻倍!

办公最常用的60个函数大全:从入门到精通,效率翻倍!在职场中,WPS/Excel几乎是每个人都离不开的工具,而函数则是其灵魂。掌握常用的函数,不仅能大幅提升工作效率,还能让你在数据处理、报表分析、自动...

收藏|查找神器Xlookup全集|一篇就够|Excel函数|图解教程

原创版权所有全程图解,方便阅读,内容比较多,请先收藏!Xlookup是Vlookup的升级函数,解决了Vlookup的所有缺点,可以完全取代Vlookup,学完本文后你将可以应对所有的查找难题,内容...

批量查询快递总耗时?用Excel这个公式,自动计算揽收到签收天数

批量查询快递总耗时?用Excel这个公式,自动计算揽收到签收天数在电商运营、物流对账等工作中,经常需要统计快递“揽收到签收”的耗时——比如判断某快递公司是否符合“3天内送达”的服务承...

Excel函数公式教程(490个实例详解)

Excel函数公式教程(490个实例详解)管理层的财务人员为什么那么厉害?就是因为他们精通excel技能!财务人员在日常工作中,经常会用到Excel财务函数公式,比如财务报表分析、工资核算、库存管理等...

Excel(WPS表格)Tocol函数应用技巧案例解读,建议收藏备用!

工作中,经常需要从多个单元格区域中提取唯一值,如体育赛事报名信息中提取唯一的参赛者信息等,此时如果复制粘贴然后去重,效率就会很低。如果能合理利用Tocol函数,将会极大地提高工作效率。一、功能及语法结...

Excel中的SCAN函数公式,把计算过程理清,你就会了

Excel新版本里面,除了出现非常好用的xlookup,Filter公式之外,还更新一批自定义函数,可以像写代码一样写公式其中SCAN函数公式,也非常强大,它是一个循环函数,今天来了解这个函数公式的计...

Excel(WPS表格)中多列去重就用Tocol+Unique组合函数,简单高效

在数据的分析和处理中,“去重”一直是绕不开的话题,如果单列去重,可以使用Unique函数完成,如果多列去重,如下图:从数据信息中可以看到,每位参赛者参加了多项运动,如果想知道去重后的参赛者有多少人,该...

Excel(WPS表格)函数Groupby,聚合统计,快速提高效率!

在前期的内容中,我们讲了很多的统计函数,如Sum系列、Average系列、Count系列、Rank系列等等……但如果用一个函数实现类似数据透视表的功能,就必须用Groupby函数,按指定字段进行聚合汇...

Excel新版本,IFS函数公式,太强大了!

我们举一个工作实例,现在需要计算业务员的奖励数据,右边是公司的奖励标准:在新版本的函数公式出来之前,我们需要使用IF函数公式来解决1、IF函数公式IF函数公式由三个参数组成,IF(判断条件,对的时候返...

Excel不用函数公式数据透视表,1秒完成多列项目汇总统计

如何将这里的多组数据进行汇总统计?每组数据当中一列是不同菜品,另一列就是该菜品的销售数量。如何进行汇总统计得到所有的菜品销售数量的求和、技术、平均、最大、最小值等数据?不用函数公式和数据透视表,一秒就...