excel如何随机生成几个数,且这几个数的和等于指定的一个数
谢谢xibei168兄的不吝赐教,您写的程序实在好用,但我只会用执行宏来生成随机数,请问能用你写的函数shuji来生成随机数吗?(在函数中指定数值范围宽度,指定和值,随机数的数量,由函数来直接生成随机数,而不用去编辑宏,或是用函数的参数来设定数值范围宽度,指定和值,随机数的数量,由宏来生成随机数。)。再次感谢您的回答,谢谢!!! 感谢xibei168大力帮助,终于完成了这个程序。程序做得很好,人比程序更好! 展开
在EXCEL中利用ROUNDUP函数可以随机生成几个数,且这几个数的和等于指定的一个数。演示软件版本excel2007,演示为随机生成5个数,和为100。具体操作请参照以下步骤。
1、在C5单元格内输入公式“=ROUNDUP(RAND()*2*(100-SUM($E$1:E1))/(11-ROW(E1)),1)”生成第一个随机数。最后一个数字“1”代表为有效数字位,可以根据个人需要需要修改。
2、然后按下回车键,表格中就会出现第一个随机数。
3、点击C5右下角的黑点,鼠标变成十字形,拖往C8单元格,这样就填充了C5到C8单元格,这里就生成了4个随机数。
4、然后在C9表格中输入命令【=100-SUM(C5:C8)】,生成最后一个随机数。
5、完成以上设置后,即可在exce中随机生成几个数,且这几个数的和等于指定的一个数。
2015-09-28 · 知道合伙人数码行家
1.首先介绍一下如何用RAND()函数来生成随机数(同时返回多个值时是不重复的)。
如下图所示,在单元格中输入=RAND(),回车后单元格即返回了一个随机数字。
2.RAND()函数返回的随机数字的范围是大于0小于1。因此,也可以用它做基础来生成给定范围内的随机数字。
3.生成制定范围的随机数方法是这样的,假设给定数字范围最小是A,最大是B,公式是:
=A+RAND()*(B-A)。
举例来说,要生成大于60小于100的随机数字,因为(100-60)*RAND()返回结果是0到40之间,加上范围的下限60就返回了60到100之间的数字。
4.上面RAND()函数返回的0到1之间的随机小数,如果要生成随机整数的话就需要用RANDBETWEEN()函数了,如下图该函数生成大于等于1小于等于100的随机整数。
这个函数的语法是这样的:=RANDBETWEEN(范围下限整数,范围上限整数),结果返回包含上下限在内的整数。注意:上限和下限也可以不是整数,并且可以是负数。
5.RAND()和RANDBETWEEN()是生成随机数的基础函数,也可以灵活变通。比如说要生成0.01至1之间包含两位小数的随机数,则可用下图的公式实现:
2015-10-19 · 知道合伙人软件行家
Sub 宏1()
Dim SUM1, M1 As Double
Dim SHU As Integer
SUM1 = 100 '设置和值
M1 = 8 '设置数据宽度(最大-最小)
SHU = 10 '设置数据个数
k = suiji(SUM1, M1, SHU)
End Sub
Function suiji(SUM1, M1 As Double, SHU As Integer)
Dim r(), i, k, s, m2 As Double
ReDim Preserve r(SHU)
If M1 <= 0 Then End '判定m1值是否合理
m2 = (SUM1 - M1 / 2 * SHU) / SHU
For i = 1 To SHU - 1 '设置循环次数,用于取4个随机数
r(i) = m2 + M1 * Rnd() '设置一个随机数值,范围0-100
For k = 1 To i '用于测试是否有重复数值,如没有必要可以去掉中间的if语句
s = s + r(k)
If r(i) = r(k) And i <> k Then
i = i - 1
Exit For
End If
Next k
If s > SUM1 Then '判定是否超出指定和值
i = i - 1
GoTo dd
End If
If i > 1 Then '用于测试前I个数值的和是否超标,如果超出就重新给最后一个数赋随机值
KK = (m2 + M1) * (SHU - i)
KF = m2 * (SHU - i)
TT = SUM1 - s
If TT >= KK Or TT <= KF Then
i = i - 1
GoTo dd
End If
End If
If i = SHU - 1 Then '给最后一个数赋值,并查看是否与前面数值重复,如可以重复就去掉这个IF和ENDIF
r(SHU) = SUM1 - s
For k = 1 To SHU - 1
If r(SHU) < m2 Or r(SHU) = r(k) Then '如果有与前值有重复的就重新给第SHU-1数赋值
i = i - 1
GoTo dd
End If
Next k
End If
dd: s = 0
If i >= 1 Then Cells(i, 1) = r(i) '如果I值有效给单元格进行赋值
Next i
Cells(SHU, 1) = r(SHU)
End Function