版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
机数的5种方法【原】教你在Excel中生成随机数的5种方法2022-02-21Excel中的随机数并非是每个用户都需要的功能,大多数人的数据都会使用固定数字和公式,可能不需要在他们的报告中出现随机数。财务模型可以使用依赖于概率的随机模拟,有些数据模型可能需要运行数千次,但随机数生成器会提供每次模拟的参数。无论您需要怎么样的随机数,Excel都有多种生成它们的方法。在这篇文章中,我将向您展示可用于将随机数插入到工作簿中的各种方法。1/使用RAND函数生成随机数我将向您展示的第一种方法是在Excel中生成随机值的最简单方法。Excel中有一个非常简单的RAND函数,它不需要参数,会生成一个0到1之间的随机数。RAND函数示例:=RAND此函数没有必需或可选的参数。该函数始终以一组空括号输入。此函数将生成一个介于0和1之间的随机小数,但不包括0或1有可能会存在重复值,但是概率会比较低,因为在0和1之间的小数是太多了。返回的值将遵循均匀分布。这意味着0和1之间的任何数字都有可能被返回。使用RAND()在任意两个数字之间生成随机叫可以使用RAND()函数的简单公式在任意两个数字之间生成随机数。=RAND()*(Y-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函数是对此的完美解决方案。它将用一组随机数填充系列单元格,不过此功能仅适用于Microsoft365版本的ExcelRANDARRAY函数的语法:^^=RANDARRAY([rows],[columns],[min],[max],[whole_nmber])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(VisualBasicforApplications)是位于Excel前端的编程语言,也可用于生成随机数。但是,它比简单地在Excel中的单元格中输入公式要复杂,而且需要一些编程知识才能使用它要打开VBA编辑器,请使用Alt+F11键盘快捷键在窗口(项目资源管理器)的左侧窗格中,将看到打开的工作簿(包括加载项)和可用的工作表在窗口顶部的菜单上,单击“插入”,然后单击“模块”。这将向当前电子表格添加一个模块窗口。将以下代码粘贴或添加到模块中SubRandomNumber()MsgBoxRnd()^^MEndSub^^^^H按F5运行它,Excel中将出现一条消息弹出窗口,并显示一个随机数。点击确定,您将返回代码窗口。再次运行代码,将显示不同的随机数。随机数将介于0和1之间,但不包括0或1的值。还可以为Rnd函数提供一个参数,该参数是用于生成随机数的算法起点的种子。如果种子值设置为负数或零,则每次将显示相同的随机数。例如,如果您想生成3到10之间的完整随机数,则可以使用以下代码。此代码将随机数乘以7,然后将其加3,然后四舍五入到小数点零位。假设您想在单元格中显示您的随机数。您可以使用以下代码执行此操作SubRandomNumberSheet()^^^^^^^^^^^^MAsIntege^^^^^^^^^^^^^^^^^^^B1ToActiveSheet.Cells(M,1)=Round((Rnd(10)*7)+3,0)NextM^^^^^^^^^^^^^^^^^^lEndSub还有一个名为Randomize的VBA函数。可以在Rnd函数之前使用它来将种子值重置为计时器事件或任何给定的参数SubRandomNumberV2()
Randomize(10)MsgBoxRound((Rnd()*7)+3)EndSub6/生成不重复的随机数可能会遇到这样一种情况:想生成一系列随机数,但又不想看到任何重复值出现。可能希望从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)-注意,公式使用了绝对引用($符号),以便在向下复制公式时公式引用保持固定用VBA解决:还可以使用VBA生成一串从1到10的无重复随机数SubRandomNumberNoDuplicates()^^^^^^^^|DimMAsInteger,TempAsString,RandNAsIntege1To1R0PeatRepeat:^^^^^^^^^^^^^^^^^^^^^^^^|1R0PeatRandN=Round((Rnd(10)*9)+1,0fInStr(Temp,RandN)ThenGoTRepeactiveSheet.Cells(M,1)=RandNTemp=Temp&RandN&NextMEndSub代码迭代从1到5的值,每次生成1到10之间的随机数。它测试随机数以检查它是否已经生成。这是通过将成功的数字连接成一个字符串然后搜索该字符串以查看该数字是否已被使用来完成的。如果已找到,则它使用标签重复返回并重新生成一个新号码。再次测试它尚未使用。如果是新号码,则将其添加到工作表中动态数组的解决方案:假设要从序列1到10中返回5个数字。您希望每个选择的数字都是唯一的。这可以使用SEQUENCE.SORTBY、RANDARRAY和INDEX函数的组合来完成SEQUENCE(10),RANDARRAY(10)SEQUENCE(5))上面的公式创建了一个从1到10的数字序列然后使用SORTBY函数以随机顺序对它们进行排序,并对RANDARRAY函数生成的随机数列进行排序。效果是按随机顺序对序列进行排序。现在,如果想获得5个随机且唯一的数字,只需从随机排序的序列中取出前5个数字。这正是INDEX函数所做的!这部分公式将从随机排序的序列中返回前5个数字结论在Excel中有多种生成随机数的方法。无论您需要整数、小数还是具有上限和下限的随机数范围,都可用Exc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年玉林市第一人民医院医护人员招聘考试参考题库及答案详解
- 2026年浙江省中医院医护人员招聘考试参考试题及答案详解
- 2026年广发银行(海口分行)人员招聘笔试备考试题及答案详解
- 2026年天津市中西医结合医院医护人员招聘考试参考题库及答案详解
- 2026年黄石市中心医院普爱院区医护人员招聘考试备考试题及答案详解
- 2026年中国工商银行(黑龙江分行)人员招聘考试参考题库及答案详解
- 2026年解放军第180医院医护人员招聘笔试参考试题及答案详解
- 2025年中国人民解放军第44医院医护人员招聘考试试题附答案详解
- 2026年南平市第一医院医护人员招聘考试参考题库及答案详解
- 2026年榆林市中医院医护人员招聘考试参考试题及答案详解
- 爆破安全教育培训内容课件
- 2024-2025学年山东省青岛市青岛版六年级下册期末质量抽测数学试卷(无答案)
- 2025年安徽省产前筛查诊断卫生专业技术人员资格考试历年参考题库含答案详解(5套)
- 消防训练基地建设标准
- DB37-T4827-2025 水利工程运行管理标牌设置指南
- GB/Z 44267-2024自动化系统与集成工业数据数字孪生的可视化元素
- (正式版)HGT 3873-2024 增塑剂 己二酸二(2-乙基己基)酯(DOA)
- 《首件检验培训教材》课件
- 2022年吉林大学软件工程专业《计算机网络》科目期末试卷B(有答案)
- 施工现场消防安全培训课件讲义
- 项贤明主编马工程教材《教育学原理》第九章教师与学生
评论
0/150
提交评论