博舍

如何生成随机小数 excel随机数生成0到1保留小数点

如何生成随机小数

一、若想生成0~1的随机小数,可以使用RAND函数。

RAND函数视频教程:https://www.wps.cn/learning/course/detail/id/112

输入公式=RAND(),回车确定,即可得出随机小数。

二、若想生成指定区间的随机小数,如5~10以内的随机小数。

可以使用SUM函数、RANDBETWEEN函数和RAND函数相结合。

SUM函数视频教程:https://www.wps.cn/learning/course/detail/id/151

RANDBETWEEN函数视频教程:https://www.wps.cn/learning/course/detail/id/181

RAND函数视频教程:https://www.wps.cn/learning/course/detail/id/112

输入公式=SUM(RANDBETWEEN(5,10),RAND())

RANDBETWEEN(5,10)指的是随机生成5~10区间的整数。

RAND()指的是随机生成0~1区间的小数。

然后再用SUM函数将随机整数、随机小数相加,就可以得出5~10以内的随机小数。

三、若想随机生成指定位数的小数,如指定3位小数的数值。

选中随机生成的小数区域,使用快捷键Ctrl+1打开单元格格式。

选择“数值”单元格格式,设置3位小数位数。

Excel随机数产生函数Rand与RandBetween的用法,含生成固定的、不重复的或指定范围的随机数

在excel中,生成随机数可以用rand函数或RandBetween函数,其中前者用于生成0到1的小数随机数,后者用于生成指定范围的整数随机数。Rand函数也可以生成指定范围的随机数,但要用公式=RAND()*(b-a)+a,且生成的随机数仍然为小数。

直接用Rand函数或RandBetween函数生成随机数,都可能产生重复的随机数,如果要求生成不重复的随机数,需先产生种子再用种子生成随机数,或用Small+If+CountIf+Row+Int+Rand函数生成。在默认情况,用Rand函数或RandBetween函数生成的随机数容易发生变化,如果要求生成不变的随机后,需要把它们转为数值。

 

一、Excel随机数产生函数的语法

(一)Rand函数

1、表达式:RAND()

 

2、说明:

A、Rand函数用于生成0到1之间的随机数;如果要生成a与b之间的随机数,需要使用RAND()*(b-a)+a;例如生成1到100的随机数,可以用公式=RAND()*(100-1)+1。

B、用Rand函数生成的随机数,每次计算工作表时会变为另一个随机数,如果要求不变,输入公式=RAND()后,保持编辑状态,按F9把公式转为数值,具体见下文的实例。

 

(二)RandBetween函数

1、表达式:RANDBETWEEN(Bottom,Top)

 

2、说明:

A、RandBetween函数用于生成任意两个指定数之间的随机数,参数Bottom为指定数值范围的最小值、Top为指定数值范围的最大值。

B、与Rand函数一样,RandBetween函数生成的随机数,每次计算工作表时也会变为另一个随机数,如果要求已生成的随机数不变,输入完公式后,按F9把公式转为数值即可。

 

 

二、Excel随机数产生函数Rand的使用实例

(一)生成0到1之间的固定不变的小数随机数

选中A1单元格,输入公式=rand(),按回车,返回随机数0.500716885;双击A1,按回车,随机数变为0.140809335,每执行一次公式,随机数会变化;再次双击A1,按F9,则公式转为随机数0.859460188902102,再怎么双击A1,也不会出现公式,随机数也不会再变化;操作过程步骤,如图1所示:

图1

 

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

1、假如要生成100到1000之间的随机数。双击A1单击格,把公式=INT(RAND()*(1000-100)+100)复制到A1,按回车,返回随机数816;操作过程步骤,如图2所示:

图2

2、公式=INT(RAND()*(1000-100)+100)说明:

用Rand函数生成100到1000之间的随机数可用公式=RAND()*(b-a)+a,a为100,b为1000,但用此公式生成的随机数是小数,如果要生成整数的随机数,要用Int函数取整。

 

 

三、Excel随机数产生函数RandBetween的使用实例

(一)生成指定范围的固定不变的整数随机数

假如要生成0到100之间的随机数。双击A1单元格,把公式=RANDBETWEEN(0,100)复制到A1,按回车,返回随机数57;双击A1,按回车,随机数变为15,每执行一次公式,随机数也会变化;再次双击A1,按F9,把公式转为数值10,再双击A1,不会再出现公式;操作过程步骤,如图3所示:

图3

 

(二)生成正负数之间的随机数

假如要生成-100到100之间的随机数。双击A1单元格,把公式=RANDBETWEEN(-100,100)复制到A1,按回车,返回随机数9;再次双击A1,按回车,返回随机数-99;操作过程步骤,如图4所示:

图4

 

 

四、Excel随机数产生函数的扩展应用

(一)生成固定不变的随机数

Excel生成固定不变的随机数有两种方法,一种为输入公式后按F9,把公式转为数值,在上面已经介绍过;另一种方法为把生成的随机数复制为数值,此方法可以批量把生成的随机数转为固定不变的数值,具体方法如下:

双击A1单元格,里面是一个生成随机数的公式,按回车,生成新的随机数;框选A1:B9,按Ctrl+C复制;当前选项卡为“开始”,单击窗口左上角的“粘贴”,在弹出的选项中选择“粘贴数值”下的“值”图标,则选中的所有单元格中的生成随机数公式转为数值,再次双击A1,已经没有公式;操作过程步骤,如图5所示:

图5

 

(二)生成不重复的随机数

(1)先生成种子,再用种子生成不重复的随机数

1、生成不重复的小数随机数

A、生成种子。双击A1单元格,把公式=RAND()复制到A1,按回车,生成一个小数随机数;选中A1,把鼠标移到A1右下角的单元格填充柄上,按住左键,往下拖一直拖到A10,则所经过单元格都变为同一随机数,按Ctlr+S保存,则A1:A10更新为不同的随机数;

B、生成不重复随机数。双击B1,把公式=RAND()复制到B1,输入*A1,按回车,返回一个新的随机数;选中B1,把鼠标移到B1右下角的单元格填充柄上,鼠标变为黑色加号后,双击左键,则B2:B10变为与B1一样的随机数,按Ctrl+S保存,B2:B10变为不同的随机数;操作过程步骤,如图6所示:

图6

 

2、生成不重复的指定范围的整数随机数

A、假如要生成50到100之间的随机数。双击A2单元格,把公式=RANDBETWEEN(50,100)复制到A2,按回车,生成一个种子随机数,用往下拖的办法生成其它种子随机数;

B、双击B2,把公式=INT(RANDBETWEEN(50,100)*A2/100)复制到B2,按回车,生成一个随机数,用双击B2单元格填充柄的方法生成其它随机数;操作过程步骤,如图7所示:

图7

 

C、公式=INT(RANDBETWEEN(50,100)*A2/100)说明:

先用RANDBETWEEN(50,100)产生50到100的随机数,再用该随机数与A2中的种子随机数相乘,然后再除100(由于两个50到100的数值相乘扩大了100倍,因此要缩小100倍),最后用Int函数取整。

提示:先生成种子再用种子生成随机数不能保证生成的随机数一定不重复,如果要求生成唯一的随机数,需要下文的方法。

 

(2)用Small+If+CountIf+Row+Int+Rand函数生成不会重复的随机数

A、假如要生成1到12之间的不重复随机数。双击A2单元格,把公式=SMALL(IF(COUNTIF(A:A1,ROW(:))=0,ROW(:)),INT(RAND()*(12-ROW(1:1))+1))复制到A2,按Ctrl+Shift+回车,生成随机数6;把鼠标移到A2右下角的单元格填充柄上,鼠标变为黑色加号后,往下拖一直拖到A13,则所经过单元格全变为6,按Ctrl+S保存,则A2:A13变为1到12的随机数;操作过程步骤,如图8所示:

图8

B、公式=SMALL(IF(COUNTIF(A:A1,ROW(:))=0,ROW(:)),INT(RAND()*(12-ROW(1:1))+1))说明:

[1]、A表示对列相对引用、对行绝对引用($表示绝对引用),当往下拖时,A1不会变为A2、A3等;当往右拖时,A1会变为B1、C1等。A1表示对列和行都是相对引用,当往下拖时,A1会变为A2、A3等;当往右拖时,A1会变为B1、C1等。

[2]、A:A1用于返回当前单元格到拖到单元格的所有数值;当公式在A2时,A:A1返回A1,A1为空,因此返回0;当公式在A3时,A:A1变为A:A2,它以数组形式返回A1、A2中的数值,即返回{0;5};其它的以此类推。

[3]、表示对行的绝对引用,当往下拖时,1不会变为2、3等;与是一个意思;ROW(:)用于返回1到12的数组,即返回{1;2;3;4;5;6;7;8;9;10;11;12}。

 

[4]、当公式在A2时

COUNTIF(A:A1,ROW(:))变为COUNTIF(A1,{1;2;3;4;5;6;7;8;9;10;11;12}),A1为统计个数的范围,数组为条件,执行时,依次取条件数组中的每个元素统计在A1中出现的次数,第一次执行取条件数组的第一个元素1,由于A1的数值为0,因此统计结果为0;第二次执行取2,统计结果也为0;其它的以此类推;最后返回{0;0;0;0;0;0;0;0;0;0;0;0};

则COUNTIF(A$1:A1,ROW($1:$12))=0变为{0;0;0;0;0;0;0;0;0;0;0;0}=0,接着,取数组中的每个元素与0比较,如果相等,返回True,否则返回False,最后返回{TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE};

则IF(COUNTIF(A$1:A1,ROW($1:$12))=0,ROW($1:$12))变为IF({TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE},

{1;2;3;4;5;6;7;8;9;10;11;12}),执行时,依次取IF条件数组中的每个元素出来,如果为True,返回第二个数组与之对应的元素,否则返回False;由于条件数组中全为True,因此返回{1;2;3;4;5;6;7;8;9;10;11;12};

1:1表示对行的相对引用,往下拖时,1:1会变为2:2、3:3等;ROW(1:1)返回第一行的行号1;12-ROW(1:1)返回11,12是生成指定范围随机数的上限;

RAND()用于返回0到1的小数随机数,假如它返回0.401319158944677,则INT(RAND()*(12-ROW(1:1))+1)变INT(0.401319158944677*11+1),进一步计算变为INT(4.414510748391450+1),接着,用Int函数取整,结果为5;

则公式变为=SMALL({1;2;3;4;5;6;7;8;9;10;11;12},5),最用Small函数返回数组中第5个最小的数,即返回5。

 

[5]、公式在A3时

COUNTIF(A$1:A2,ROW($1:$12))变为COUNTIF(A$1:A2,{1;2;3;4;5;6;7;8;9;10;11;12}),执行时,同样依次取条件数组中的每个元素统计在A1:A2中的个数,由于A1为0,A2为5,因此A1:A2返回{0;5};第一次执行取条件数组中的1,由于数组{0;5}中没有1,因此返回0;第二次取2,同样返回0;其它的以此类推,最后返回{0;0;0;0;1;0;0;0;0;0;0;0};

则COUNTIF(A$1:A2,ROW($1:$12))=0变为{0;0;0;0;1;0;0;0;0;0;0;0}=0,计算结果为{TRUE;TRUE;TRUE;TRUE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE};

则IF(COUNTIF(A$1:A2,ROW($1:$12))=0,ROW($1:$12))变为IF({TRUE;TRUE;TRUE;TRUE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE},{1;2;3;4;5;6;7;8;9;10;11;12}),进一步计算返回{1;2;3;4;FALSE;6;7;8;9;10;11;12};剩余步骤与公式在A2时一样。

 

C、如果要生成其它范围的随机数(如5到10的随机数),只需把上面的公式改一下即可,公式可以这样写:

=SMALL(IF(COUNTIF(B$5:B5,ROW($5:$10))=0,ROW($5:$10)),INT(RAND()*(10-ROW(5:5))+1))

把公式复制到B6,按回Ctrl+Shift+回车,生成一个随机数,然后用往下拖的方法一直拖到B11,按Ctrl+S保存,则生成5到10的不重复随机数;操作过程步骤,如图9所示:

图9

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com处理,核实后本网站将在24小时内删除侵权内容。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

上一篇

下一篇