数组随机⽣成_⽤Excel如何⽣成随机数字表
“随机”是我们进⾏医学科研设计的基本原则之⼀,常⽤的随机⽅法有很多,其中随机数字表法就是最常⽤的随机⽅法,很多⼈不知道怎么⽣成随机数字表,其实Excel就可以完成。
在 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 保存,则每个单元格变为新⽣成的随机数;操作过程步骤,如下图所⽰:
2、⽤ Rand() ⽣成指定范围的随机数
假如要⽣成 1 到 100 的随机数。选中 A1 单元格,把公式 =RAND()*(100 - 1) + 1 复制到 A1,按回车,则⽣成⼀个 1 到 100 之间的随机数;同样⽅法往下拖并保存⽣成其它随机数,操作过程步骤,如下图所⽰:
(⼆)⽤ RandBetween() ⽣成指定范围的随机数
假如要⽣成 50 到 100 之间的随机数。选中 A1 单元格,把公式 =RANDBETWEEN(50, 100) 复制到 A1,按回车,⽣⼀
个 50 到 100 之间的随机数;同样⽤往下拖并保存的⽅法⽣成其它随机数,操作过程步骤,如下图所⽰:
三、Excel⽣成不重复的随机数
(⼀)⽅法⼀:先⽣成种⼦再⽣成不重复的随机数
1、⽣成不重复的⼩数随机数。选中 A1 单元格,输⼊公式 =RAND(),按回车,则⽣成⼀个随机数,把⿏标移到 A1 的单元格填充柄上并往下拖,然后 Ctrl + S 保存,⽣成其它随机数;选中 B1 单元格,输⼊公式 =RAND()*A1,按回车,则⽣成⼀个不重复随机数,同样⽅法往下拖并保存,⽣成其它不重复随机数;操作过程步骤,如下图所⽰:
2、⽣成不重复的整数随机数
A、假如要⽣成 10 到 100 之间的不重复随机数。把公式 =RANDBETWEEN(10,100) 复制到 A1 单元格,按回车,⽣成⼀个随机数;⽤往拖并保存的⽅法⽣成其它随机数;把公式 =INT(RANDBETWEEN(10,100)*A1/100) 复制到 B1 单元格,按回车,⽣成⼀个不重复的随机数,同样⽤往下拖的⽅法,⽣成其它不重复的随机数;操作过程步骤,如下图所⽰:
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 之间的其它不重复随机数;操作过程步骤,如下图所⽰:
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}。
E、逆向解析公式执⾏过程
1)公式执⾏到最后⼀步变为 =SMALL({1;2;3;4;5;6;7;8;9;10},8},如下图所⽰:
excel数组函数的实例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},如下图所⽰:
再看 A4 单元格中的同样步骤(选中 A4,打开“公式求值”窗⼝,点“求值”⼀直到与图9⼀样的步骤),第 1、3 个元素为 1,
即 {1;0;1;0;0;0;0;0;0;0},为什么第 1、3 个元素为 1,其它元素为 0?,因为 1 和 3 已经⽣成了随机数,即 A2 和 A3 中的随机数,如下图所⽰:
继续往后执⾏,1 会变为 False,0 会变 True,如图11所⽰:
也就是为 False 的,就不会再从 ROW($1:$10)(即 {1;2;3;4;5;6;7;8;9;10})返回元素,如下图所⽰:
当⽤ 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)),如下图所⽰:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论