中企动力 > 商学院 > excel随机数生成
  • ?

    Excel随机取值,给你三种解决方案

    范亿先

    展开

    所谓随机取值,顾名思义,就是从一堆数里,随机抽取几个或几组数;常用于抽奖、抽查、数据随机分组等。

    举个栗子,如下图所示,A2:A21是EH培训学院的20名……男女。现在需要从中随机抽取3人,授予38红旗手的称号,并奖励老祝香吻一枚。

    解法1:辅助列法

    使用辅助列,解决此类问题,应是最简单较快捷的一种解法,基本上老少咸宜,稍有函数公式基础就可以掌握了。

    首先将C列作为辅助列,C2输入以下公式,并复制填充至C2:C21区域。

    =RAND()

    RAND函数生成大于等于0、小于1的随机数。

    其次,在E2单元格输入以下公式,复制填充至F2:F4区域即可得到抽奖结果了。

    =INDEX(A:A,MATCH(LARGE(C:C,ROW(A1)),C:C,))

    LARGE(C:C,ROW(A1)),随着公式向下填充,依次从C列里提取第1、2、3最大的数值;再使用INDEX+MATCH的查询套路得出结果。

    结果可能如下:

    耸肩,摊手:现在问题来了——请问老祝如何亲吻老祝呢?

    想想都太有挑战性了。哈哈哈

    解法2:一条公式

    好伐,打个响指,那能不能只用一条函数公式得出最终结果?

    当然也可以,只是稍显复杂。

    选取E2:E4单元格区域,使用数组三键(同时按下Ctrl+Shift+Enter)输入以下公式,即可得出结果。

    =INDEX(A:A,RIGHT(SMALL(RANDBETWEEN(1^ROW(2:21),99)/1%+ROW(2:21),ROW(1:3)),2))

    RANDBETWEEN(1^ROW(2:21),99),随机取得>=1且<99的20个整数,生成一维纵向内存数组,例如:

    {3;17;11;40;64;65;75;83;19;37;88;74;76;17;46;39;43;80;38;92}

    之后除以1%,将随机值放大百倍,再加上人名所在行的行号(+ROW(2:21)),使用SMALL函数依次从小到大取值,使用RIGHT函数重新取出行号,最后使用INDEX函数得出抽奖结果。

    敲黑板!注意这是一条区域数组公式。

    公式的计算原理其实是酱紫;

    我们把20位男女所在的行号,看成是座位号。我们对座位号随机加上不同的权重,然后重新进行排队(升序用small,降序用large),得到一个打乱了的座号排列结果,最后依次将人名取出即可。

    公式计算结果可能如下:

    ——挑眉!震惊!震惊!!老祝居然如何自恋!自吻3×2次。天啦噜~哈哈哈

    解法3:洗牌吧

    VBA的解法也有多种,最不用动脑的是字典法,但效率偏差,此处略过不提。

    嗯,分享下最有效率也最有扩展性的洗牌法。

    先讲个故事,憋走开……

    假设有一名班花,有一天早晨想斗地主,目前的情况很明显是一缺三,于是打算从全班20位同学里随机抽3人。班花把他们喊出教室,排成一字纵队。

    第一步,从20人里随机抽取1人。假设抽到的是排在第15位的“随风小妞”。把她揪出来,拖到第1位去,然后把原本排在第1位的某童鞋安排到第15位去。这样,就成功抽取了一名……牌友。现在是2缺2。

    第二步,从排在第2位和第20位之间的童鞋里再随机抽取一人——为什么不是从第1位开始抽呢?

    “随风小妞”举手回答说她已经被抽过了,不能被抽第二次(意思就是她不欠抽了)。

    假设这次抽到了排在第6位的“空空”,把她请出来,送到第2位去,再把原本排在第2位的某同学安排到第6位。现在是3缺1了。

    第3步,从第3位到第20位之间的童鞋再随机抽取1人,排到第3位去。这样,队伍里的前3名就是今天的牌友了。恩,加上班花,4人刚好,散队,打牌去。

    是的,现在,只要我们把上面的故事翻译成VBA代码,之前的示例问题也就解决了。

    代码如下:

    Sub ehkjxg()

    Dim r, i&, t, x&

    Randomize '随机种子初始化

    r = [a2:a21] '将学生喊出教室,装入数组r

    For i = 1 To 3 '抽3个人

    x = Int(Rnd() * (UBound(r) - i + 1)) + i

    '依次从第1~2……位置起随机抽取学生

    t = r(x, 1) '被抽中的学生出列

    r(x, 1) = r(i, 1) '前列的学生去被抽中学生的位置

    r(i, 1) = t '被抽中的学生站到前排去

    Next

    [e2].Resize(3, 1) = r’将队伍的前3名学生(抽取结果)放入抽奖区

    End Sub

    或许有人问,为什么一定要把抽出来的牌友放到队伍前面去?放到队伍后面行不行?另起一队行不行?其实都可以。

    这不是问题的关键。问题的关键在于,每抽出一位牌友,他原来的位置务必不能留空,可以由队前或队尾的人补进来。这样,随机取值的范围渐渐收窄,不白抽,亦不抽错。

  • ?

    利用RANDBETWEEN函数,自动实时生成不重复的随机数

    凉生

    展开

    在工作中我们会经常遇到一些较为纯粹的数学问题,比如要产生可控的30个不重复的随机数,什么意思呢?就是要产生一组30个的随机数,这30个数是不重复的。但是要求这30个数的产生是可控的,就是说要在需要时实时产生。

    这时我们要用到一个RANDBETWEEN函数,作为我们实现目的主要函数:还需要一个迭代运算的设置,下面我一一讲解:

    一:RANDBETWEEN函数:

    返回大于等于指定的最小值,小于等于指定最大值之间的一个随机整数。每次计算工作表时都将返回一个新的数值

    定义:返回位于两个指定数之间的一个随机整数。 每次计算工作表时都将返回一个新的随机整数。

    语法:RANDBETWEEN(bottom,top)

    Bottom参数: RANDBETWEEN将返回的最小整数。

    Top参数: RANDBETWEEN将返回的最大整数。

    二 另外为了实现这个功能,我们还需要用到迭代运算:

    设置:工具》》选项》》重新计算》》勾选迭代运算,次数可以根据实际情况设置,我下面的例子是产生30个数,我设置的迭代次数是100就够用了。

    上面的内容准备好后,我们看今天的实例:

    要求在30个单元格里使用randbetween(1,500),随机抽取产生1-500之间的任意数,这30个数中不要有出现重复的数。并要求在需要时实时产生.

    首先我们在A1单元格中录入下面的的公式:=IF(COUNTIF($A$1:$E$6,A1)=1,A1,RANDBETWEEN(1,500)),并一直拖满到E6的单元格,正好是30个单元格的位置。公式讲解:以A1单元格的公式为例,这个公式在A1单元格中出现一个随机数RANDBETWEEN(1,500),当这个随机数产生后,公式会有一个判断,就是满足:COUNTIF($A$1:$E$6,A1)=1也就是说要在$A$1:$E$6中和A1值相等的数是1个,当确实是1个时那么不再变化,当不是1个的时候,那么再次产生随机数RANDBETWEEN(1,500),然后再次判断,直到满足条件为止。但最多的迭代次数是100次,即将产生最多100次的重复计算,所以这个最大的迭代次数很关键,如果选的小了,或许不会满足我们的要求。

    好,看下面的截图:是一组已经产生了的不重复的30个数字:

    问题写道这里,仿佛是写完了,其实还没有,上面的方法是产生了我们需要的30个数,但是题目要求是在需要的时候实时产生,这怎么办呢?我们再增加一个条件语句,即可达到此效果,公式如下: =IF(COUNTIF($A$1:$E$6,A1)=1,IF($G$1=1,RANDBETWEEN(1,500),A1),RANDBETWEEN(1,500))

    此时G1为控制格,当在G1输入数字1,就开始变化。但变化后的数据有可能不惟一了,怎么办?把1清除即可!

    我们还是先把讲解一下上面的公式:

    IF($G$1=1,RANDBETWEEN(1,500),A1) 这部分是新增的判断,也就是说,当数字是唯一的时候,且当G1不是1的时候才不发生变化,否则,只要是G1的单元格变化为1时,随机数将重新产生。有些拗口,大家可以仔细的研究一下上的公式,是可以理解的。

    我们看看下面的返回截图:

    果然出现了两个重复的数值,我们把G1清空,再看下面的截图:

    好了,重复的消失了,这就达到了我们的目的,

    当我们需要产生这样的随机数时,只需要在G1中录入1,然后再删掉.

    今日内容回向:

    1 RANDBETWEEN函数的意义是什么?

    2 如何随机产生1-500之间的30个任意数中,不要有出现重复的数。并要求在需要是实时产生.

  • ?

    随机数函数Rand、Randbetween实战技巧—自动化分配监考员等技巧

    紫罗兰

    展开

    在前期讲解随机数的函数之后,好多同学留言询问,随机数到底怎么使用?有没有具体的应用案例等……今天小编结合实际情况,对随机数的具体应用做一下具体讲解。

    一、随机数函数解读。

    1、生成0-1之间的随机数。

    方法:

    1、在目标单元格中输入公式:=RAND()。

    2、如果要快速再次生成随机数,只需按F9键即可。

    解读:

    Rand函数没有参数,可以生成0-1之间的随机数,其小数位数可以精确到小数点后15位。

    2、1-N,N-N之间的随机数。

    方法:

    1、在目标单元格中输入公式:=RANDBETWEEN(1,40)、=RANDBETWEEN(50,150)。

    2、如果要快速再次生成随机数,只需按F9即可。

    二、生成指定范围内的不重复随机数。

    1、1-10不重复随机数。

    方法:

    1、添加辅助列(辅助列1,辅助列2,1-10之间不重复随机数)。

    2、在辅助列1中输入公式:=RAND(),并复制生成的随机数。

    3、将辅助列1中的随机值以【值】的形式粘贴到辅助列2中。

    4、在1-10之间不重复随机数列输入公式:=RANK(D3,D$3:D$12)。

    5、以【1-10之间的不重复随机数】列为主要关键字进行升序排序。

    解读:

    1、将辅助列1的随机值以【值】的形式粘贴到辅助列2中的目的在于固定其值的变化,毕竟生成随机值的目的在于应用,如果一直处于变化状态,就是去了其目的和意义。当然,如果感觉辅助列1中的随机值不够“随机”,可以多按F9刷新几次即可哦!

    2、Rank函数的主要作用在于:返回某一个值在某一指定范围中的排序,如果多个值排名相同,则返回平均值排名。其语法结构为:=Rank(排序的值,排序值所在的范围)。

    3、如果万一生成的随机数有重复值,我们该如何去发现并有效解决了?其实方法比较简单哦,首先我们使用Countif函数判断当前值在当前范围中出现的次数,如果都为1,则表示不重复,如果有大于1的情况,说明有重复值,只需重复方法中的1、2、3步,直到Countif函数的所有返回值为1即可。本示例中Countif函数的具体公式为:=COUNTIF(D3,D$3:D$12)。

    2、1-N不重复随机数。

    方法:

    1、添加辅助列(本示例中已添加)。

    2、在辅助列1中输入公式:=RAND(),并生成的随机值以【值】的形式粘贴到辅助列2中。

    3、在辅助列3中输入公式:=COUNTIF(D3,D:D),判断生成的随机值是否有相同的情况,如果返回值大于1,则为重复,否则为不重复。重复的情况需要继续步骤2,直到所有的返回值为1即可哦!

    4、在辅助列1-N之间不重复随机数列输入公式:=RANK(D3,D:D)。

    5、以【1-N之间不重复随机数】为主要关键字进行【升序】排序。

    解读:

    1、数字N可以根据实际情况来决定,如果有N条件数据,所有的辅助列的值即为N行即可。

    2、由于系统对图片大小的限制,对演示动图进行了压缩处理,如果有不清晰的地方请结合操作步骤学习,或者在留言区留言讨论哦!

    3、50-100之间不重复随机数。

    方法:

    1、辅助列1、2、3的操作步骤相信大家已经掌握了,如果有掌握的请查阅前文中的相关解读。

    2、在1-N之间生成的不重复随机数列输入公式=RANK(D3,D:D)+49,并进行升序排序。

    解读:

    1、我们已经知道利用公式=Rank(D3,D:D)排序的结果值最小的值为1,而我们要生成50-100之间的值,所以只需在公式的末尾加50-1=49。暨范围中最小值减去1即可。

    三、应用示例。

    (一)、给考场分配监考员。

    步骤:

    1、准备监考员信息表并添加辅助列。

    2、生成不重复随机序号。

    方法:

    1、在辅助列1中输入公式:=RAND(),并将随机生成的值复制,以【值】的形式粘贴的辅助列2。

    2、在查重列输入公式:=COUNTIF(G3,G:G),如果得到的值全部为1,则说明没有重复值,如果得到的值有大于1的情况,重复步骤1。

    解读:

    此操作中用到了很多实用技巧,如果双击填充柄快速填充其他数据单元格,快捷键Ctrl+Shift+向下箭头快速选定表格内容等,大家在实际的操作中要主要掌握,如果数据量庞大,将非常的实用哦!

    3、生成考场号。

    方法:

    1、在不重复序号列输入公式:=RANK(G3,G:G)。

    2、以【不重复序号列】为主要关键字进行【升序】排序。

    3、在考场号列输入公式:=ROUND(I3/2,0)。

    解读:

    1、升序排序的目的在于形成新的序列,暨第二次随机将人组合在一起。

    2、示例中以两个人为一个考场进行人员分配。

    (二)、随机分配考场或分班。

    1、准备考生信息表会学生信息表并添加辅助列。

    2、生成不重复随机序号。

    方法:

    1、在辅助列1中输入公式:=RAND(),并将随机生成的值复制,以【值】的形式粘贴的辅助列2。

    2、在查重列输入公式:=COUNTIF(G3,G:G),如果得到的值全部为1,则说明没有重复值,如果得到的值有大于1的情况,重复步骤1。

    3、生成考场号或班级号。

    方法:

    1、以不重复序列号为主要关键字进行升序排序。

    2、在考场号列输入公式:=IF(I3<=25,1,IF(I3<=50,2,IF(I3<=75,3)))。

    3、在班级列输入公式:=IF(I3<=40,1,IF(I3<=80,2,IF(I3<=120,3)))。

    解读:

    1、其实分考场和分班公式的道理是相同的,考场一般情况下有25人,如果随机生成的不重复序号小于等于25,则为1考场,否则进行判断,如果小于等于50,则为2考场,以此类推,只是班级的人数稍多一点而已,40人。如果随机生成的不重复序号小于等于40,则为1班,否则进行判断,如果小于等于80,则为2班,以此类推……

    结束语:

    本文主要讲解了随机数的生成以及结合具体示例的应用,从随机数的原理到实际应用,阐述了随机数的应用价值,希望对各位亲的工作有所帮助和提高,学习过程中如果遇到任何问题,欢迎大家在留言区留言讨论哦!

  • ?

    Excel Rand Randbetween生成随机数

    廉雯

    展开

    Excel 中有时我们要生成随机数,或制作随机点名器都要用到随机数函数,那么如何制作随机数呢,跟着小编一起学习下吧。

    方法一:rand 生成随机数。

    rand 函数是生成0到1的一个随机数,以生成一个两位数的随机数为例。

    一、选中要生成随机数的单元格,快捷键 Ctrl+1设置单元格格式。设置单元格格式为数值格式,小数数位为2位。

    图1 设置单元格小数为2位

    二、单元格编辑区域里输入函数 =100rand() 将两位数的随机数计算生成两位数的随机数。

    图2 输入随机数函数并乘以100

    三、Ctrl+Enter 快速填充为同一个公式。

    图3 快速填充为相同内容

    方法二:randbetween()生成任意两个整数间的整数。

    一、选中要生成随机数的函数的单元格。

    图1 选中目标单元格

    二、输入 =randbetween(1,99) Ctrl+Enter快速填充。

    图2 randbetween函数

    OK.两个函数你学会了吗。

  • ?

    EXCEL表格之生成随机数

    严寄琴

    展开

    一、在一定数值范围内生成随机整数

    使用函数:

    1、名称:RANDBETWEEN

    返回位于两个指定数之间的一个随机数。每次计算工作表时都将返回一个新的数值。

    2、语法:

    RANDBETWEEN(bottom,top)

    Bottom 函数 RANDBETWEEN 将返回的最小整数。

    Top 函数 RANDBETWEEN 将返回的最大整数。

    二、在一定数值范围内生成随机数值(小数和整数)

    首先,计算所选定范围上限减去下限的值为多少。

    打开一个excel,选中一个单元格,在单元格内输入=(刚记录的数值)*rand()+下限值(例如,本例要生成(30,,50)区间内的10个随机数)。

    =20*RAND()+30

     回车即生成了一个符合条件的随机数。

  • ?

    Excel快速生成不重复的1-N区间的随机数

    西门庆

    展开

    Excel中产生随机数的函数有两个,Rand函数和Randbetween函数

    Rand函数使用

    Rand()不带任何参数,表示生成一个0-1的随机实数,其后面小数点可以具体到15位,如下所示:

    Randbetween函数使用

    在单元格中输入=randbetween(1,20),产生的是1-20区间的随机整数

    如果我们现在想要生成一串数字,它是某个区间不重复的数据

    例1、生成1-10区间的不重复数据。

    如果想抽取其中的几个,例如5个,则在A列中输入函数=rand(),生成的是1-10区间的,有10个数,所以从A1填充至A10,总共10个随机数,然后在B列输入=rank(a1,a:a),需要几个就向下填充几个即可,得到的就是不重复的5个数据

    如果想得到10个不重复的随机数, 那只需要将B列填充10个即可,如下所示:

    例2,生成30-39区间的不重复随机数

    【30-39】区间共有10个数,所以在A列生成10个rand()函数,然后在B列输入公式

    =29+RANK(A1,A:A)即可

    例3,生成2000-3000能除以100的整数的随机不重复整数

    【2000-3000】中有11个,所以在A列填充11个rand()函数,然后在B列输入公式:=(19+RANK(A1,A:A))*100即可

    其他情况也都是举一反三的,本节完

    你学会了吗?为自己持续学习的态度点个赞呗!

    ---------------------

    欢迎留言,转发,关注,更多精彩内容持续更新中...

  • ?

    Excel函数公式:含金量超高的随机数、不重复随机数生成技巧解读

    郑雨南

    展开

    随机数,在我们的日常中的应用也是非常广泛的,那么,如何生成随机数,如何生成不重复的随机数,你真的了解吗?

    一、生成0-1之间的随机数。

    方法:

    1、在目标单元格中输入公式:=RAND()。

    2、如果要重新生成,按F9刷新即可。

    解读:

    Rand函数没有参数,可以生成0-1之间的随机数,小数位数可以具体到15位。

    二、1—N、N—N+N之间的随机数。

    方法:

    1、在目标单元格中输入公式:=RANDBETWEEN(1,20)、=RANDBETWEEN(50,100)。

    2、如果要重新生成,按F9刷新即可。

    解读:

    1、RANDBETWEEN函数具有两个参数,分别为随机数范围的起始值和终止值,包括起始值和终止值。

    2、从上述的两个示例中我们可以看出,随机数的生成技巧,但是,生成的随机数中有重复值,如果我们不需要重复值,该如何去操作呢?

    三、1-10不重复数。

    方法:

    1、在辅助列1中输入公式:=RAND()。

    2、将辅助列1中的随机值以【值】的行驶粘贴到辅助列2中。

    3、在不重复列中输入公式:=RANK(D3,D$3:D$12)。

    4、对不重复列【排序】。

    四、1-N不重复随机数。

    方法:

    1、在辅助列1中输入公式:=RAND()。

    2、将辅助列1中的随机值以【值】的行驶粘贴到辅助列2中。

    3、在不重复列中输入公式:=RANK(D3,D:D)。

    4、对不重复列【排序】。

    解读:

    数字N可以根据实际需要来决定,如果有多行,辅助列1和辅助列2的值也需要N行即可。

    五、20-40之间的不重复随机数。

    方法:

    1、在辅助列1中输入公式:=RAND()。

    2、将辅助列1中的随机值以【值】的行驶粘贴到辅助列2中。

    3、在不重复列中输入公式:=RANK(D3,D:D)+19。

    4、对不重复列【排序】。

    解读:

    1、生成20-40之间的随机数,相对于生成1-N之间的随机数唯一不同之处在于公式:=RANK(D3,D:D)+19中加了19,所以大家要注意哦。

    2、生成N-N+X之间的数,辅助值的确定方法为N-1,例如生成20-40之间的数,加的值为20-1=19。

    六、200-400之间的不重复随机数。

    方法:

    1、在辅助列1中输入公式:=RAND()。

    2、将辅助列1中的随机值以【值】的行驶粘贴到辅助列2中。

    3、在不重复列中输入公式:=RANK(D3,D:D)+199。

    4、对不重复列【排序】。

    结束语:

    通过上述示例的学习,相信大家对于各类随机数的生成已经有所掌握了,学习过程中,如果有新的意见或观点,欢迎大家在留言区留言讨论哦!

  • ?

    EXCEL批量随机生成指定起止日期内的日期 随机数函数实例

    爱伦

    展开

    本图文案例教程 由本人所录制视频转制而成,喜欢看视频的同学请移步到头条号Excel880观看地址如下

    关键字:

    案例文件可到EXCEL880网站下载

    详细步骤图文演示如下

    1.案例情况

    2.效果如下

    3.取A,B之间的随机数

    通用公式 = rand()*(g$3-f$3)+f$3

    在Rand函数帮助里有讲rand()*(a-b)+b就可以求出a,b之间,把A,b换成自己的单元格即可,注意相对引用.

    4日期随机范围

    =randbetween(f$8,g$8)

    因为日期就是整数,我们只要用randbetween直接处理就好啦…换成你自己的单元格哦…

  • ?

    Excel函数公式:Excel生成随机数,你会吗

    牟绮菱

    展开

    随机数,在我们的工作中也是非常的常见,但是在Excel中如何生成随机数,得到我们需要的随机数呢?

    一、生成0至1之间的随机数。

    方法:

    在目标单元格中输入公式:=RAND()。

    二、生成1至10之间的随机数。

    方法:

    在目标单元格中输入公式:=RANDBETWEEN(1,10) 。

    三、生成10至100之间的随机数。

    方法:

    在目标单元格中输入公式:=RANDBETWEEN(10,100)。

    通过上面的三个示例,相信大家对RAND函数已经有了一定的了解,在我们的工作总只要加以灵活用于即可。

  • ?

    Excel用Rand和RandBetween函数生指定范围且不重复的随机数

    逃离

    展开

    在 Excel 中,生成随机数有两个函数,分别为Rand函数和RandBetween函数,前者用于生成 0 到 1 之间的随机数,后者用于生成指范围的随机数。它们生成的随机数中都会产生重复值,如果要生成不重复的随机数得用变通的方法,通常有两种方法,一种为先生成种子再生成不重复的随机数,另一种为用多个函数生成。以下就是Excel生不重复随机数和小数随机数的具体操作方法,实例中操作所用版本均为 Excel 2016。

    一、Excel随机数生成函数

    (一)Rand函数

    1、表达式:RAND()

    2、说明:RAND() 用于生成 0 到 1 之间均匀分布的随机数。如果要生成指定范围的随机数,表达式可以这样写:RAND()*(b-a) + a。

    (二)RandBetween函数

    1、表达式:RANDBETWEEN(bottom, top)

    2、说明:RandBetween 用于生成指定范围的随机数,bottom 为生成随机数的开始值,top 为生成随机数的最大值。例如:要生成 10 到 100 的随机数,可以这样写:RANDBETWEEN(10, 100)。

    二、Excel随机数生成的方法举例

    (一)用 RAND() 生成小数随机数

    1、选中 A1 单元格,输入公式 =RAND(),按回车,则生成一个小数随机数;再次选中 A1,把鼠标移到 A1 右下角的单元格填充柄上,按住左键,往下拖,则所经过单元格都用 A1 的值填充,按 Ctrl + S 保存,则每个单元格变为新生成的随机数;操作过程步骤,如图1所示:

    图1

    2、用 Rand() 生成指定范围的随机数

    假如要生成 1 到 100 的随机数。选中 A1 单元格,把公式 =RAND()*(100 - 1) + 1 复制到 A1,按回车,则生成一个 1 到 100 之间的随机数;同样方法往下拖并保存生成其它随机数,操作过程步骤,如图2所示:

    图2

    (二)用 RandBetween() 生成指定范围的随机数

    假如要生成 50 到 100 之间的随机数。选中 A1 单元格,把公式 =RANDBETWEEN(50, 100) 复制到 A1,按回车,生一个 50 到 100 之间的随机数;同样用往下拖并保存的方法生成其它随机数,操作过程步骤,如图3所示:

    图3

    三、Excel生成不重复的随机数

    (一)方法一:先生成种子再生成不重复的随机数

    1、生成不重复的小数随机数。选中 A1 单元格,输入公式 =RAND(),按回车,则生成一个随机数,把鼠标移到 A1 的单元格填充柄上并往下拖,然后 Ctrl + S 保存,生成其它随机数;选中 B1 单元格,输入公式 =RAND()*A1,按回车,则生成一个不重复随机数,同样方法往下拖并保存,生成其它不重复随机数;操作过程步骤,如图4所示:

    2、生成不重复的整数随机数

    A、假如要生成 10 到 100 之间的不重复随机数。把公式 =RANDBETWEEN(10,100) 复制到 A1 单元格,按回车,生成一个随机数;用往拖并保存的方法生成其它随机数;把公式 =INT(RANDBETWEEN(10,100)*A1/100) 复制到 B1 单元格,按回车,生成一个不重复的随机数,同样用往下拖的方法,生成其它不重复的随机数;操作过程步骤,如图5所示:

    图5

    B、公式说明:公式 =INT(RANDBETWEEN(10,100)*A1/100) 先用 RANDBETWEEN 求出 10 到 100 之间的随机数,然后乘 A1 中的随机数,再除以 100 以确保所求随机数在 10 至 100 之间,最后用 Int 函数取整。

    提示:这个方法不能确保绝对不生成重复的随机数,当每次生成的随机数有两组完全相同时,同样会生成重复的随机数。例如,A2 和 B2 生成的随机数与 A5 和 B5 生成的随机数相同,那么 B2 = A2 × RAND() 等于 B5 = A5 × RAND(),则在 B2 与 B5 生成的随机数相同。

    (二)方法二:用公式生成准确不重复随机数

    1、假如要生成 1 到 10 之间的不重复随机数。把公式 =SMALL(IF(COUNTIF($A$1:A1,ROW($1:$10))=0,ROW($1:$10)),INT(RAND()*(10-ROW(1:1))+1)) 复制到 A2 单元格,按 Ctrl + Shift + 回车,则生成一个 1 到 10 之间的不重复随机数;把鼠标移到 A2 的单元格填充柄上并往下拖,然后保存,则生成 1 到 10 之间的其它不重复随机数;操作过程步骤,如图6所示:

    2、公式说明

    A、$A$1:A1 中的 $A$1 表示绝对引用,A1 表示相对引用,即往下拖时,$A$1 始终不变,A1 则会变为 A2、A3 等。

    B、ROW($1:$10) 是对一组单元格的引用,返回一个 1 到 10 的数组,即 {1;2;3;4;5;6;7;8;9;10}。

    C、ROW(1:1)是对一个单元格的引用,返回一个一行一列的数组,往下拖时会变为 ROW(2:2)、ROW(3:3) 等。

    D、用公式求值查看公式执行过程

    选中 A2 单元格,选择“数据”选项卡,单击“公式求值”,打开“公式求值”窗口,单击一次“求值”,则计算一步。第一次单击“求值”,把公式中的 ROW($1:$10) 变为 {1;2;3;4;5;6;7;8;9;10},下面的求值步骤请看演示,如图7所示:

    E、逆向解析公式执行过程

    1)公式执行到最后一步变为 =SMALL({1;2;3;4;5;6;7;8;9;10},8},如图8所示:

    图8

    2)公式 =SMALL({1;2;3;4;5;6;7;8;9;10},8} 的意思是:从数组 {1;2;3;4;5;6;7;8;9;10} 中找出第8小的数,即为 8;也就是说前面步骤所要做的工作就要生成数组 {1;2;3;4;5;6;7;8;9;10} 和生成序号 8。

    3)IF(COUNTIF($A$1:A1,ROW($1:$10))=0,ROW($1:$10)) 负责生成数组 {1;2;3;4;5;6;7;8;9;10},INT(RAND()*(10-ROW(1:1))+1) 负责生成序号 8。

    4)COUNTIF($A$1:A1,ROW($1:$10) 是统计数组 {1;2;3;4;5;6;7;8;9;10} 每个元素在 A1 中出现的个数,A1 单元格为空,因此,统计结果全为 0,即{0;0;0;0;0;0;0;0;0;0},如图9所示:

    图9

    再看 A4 单元格中的同样步骤(选中 A4,打开“公式求值”窗口,点“求值”一直到与图9一样的步骤),第 1、3 个元素为 1,即 {1;0;1;0;0;0;0;0;0;0},为什么第 1、3 个元素为 1,其它元素为 0?,因为 1 和 3 已经生成了随机数,即 A2 和 A3 中的随机数,如图10所示:

    图10

    继续往后执行,1 会变为 False,0 会变 True,如图11所示:

    图11

    也就是为 False 的,就不会再从 ROW($1:$10)(即 {1;2;3;4;5;6;7;8;9;10})返回元素,如图12所示:

    图12

    当用 Small 从{False;2;False;3;4;5;6;7;8;9;10} 返回元素时,只从数字中返回,False 将被忽略。

    5)RAND()*(10-ROW(1:1))+1 表示生成 1 到 10 之间的随机,可参照 Rand() 生成指定范围(a 到 b)的随机数公式 RAND()*(b-a) + a;最后用 Int函数取整。

    3、如果要生成 10 到 100 之间的不重复随机数,公式可以这样写:

    =SMALL(IF(COUNTIF($A$10:A10,ROW($10:$100))=0,ROW($10:$100)),INT(RAND()*(90-ROW(10:10))+1)),如图13所示:

    图13

    按 Ctrl + Shift + 回车,则生成一个 10 到 100 之间的随机数,用往下拖的方法生成其它 10 到 100 之间的随机数,结果如图14所示:

    图14

    注意:把公式复制到 A11 单元格和公式中修改的项,如 $A$10:A10、ROW($10:$100) 和 90-ROW(10:10)。

excel随机数生成

所有视频需要登录后,才能观看

请先登录您的帐号,即可完整播放,如果您尚未注册帐号,请先点击注册。

img

在线咨询

建站在线咨询

img

微信咨询

扫一扫添加
动力姐姐微信

img
img

TOP