excel如何随机生成几个数,且这几个数的和等于指定的一个数

2024-11-15 12:25:04
推荐回答(5个)
回答(1):

在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中随机生成几个数,且这几个数的和等于指定的一个数。

回答(2):

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之间包含两位小数的随机数,则可用下图的公式实现:

回答(3):

  1. 首先计算这个范围的差值。这里假设范围值为50~100之内的随机数

  2. 打开电子表格,在所需要产随机前携伏数的单元格隐烂内输入如下公式:=rand()*(100-50)+50。

  3. 按确认键就可以生成在规定范围内的随机数了。

  4. 如果需要生成多个随机数,慧携那拖动单元格最下角小三角就可以啦。

回答(4):

请试用以下代码,m1的值用于设置数值范围宽度,SUM1用于设凳宴兄置指定和值,SHU用于设置随机数的数量;将代码直接粘贴到VBA中即可运行。如有问题请反馈!
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

回答(5):

LZ 我利用Rand()公式来实现。公败颂式及显示结果如下图。

公式基于散铅随机数生成函数Rand(),在0到1之间生成一个数字,floor()向下取冲枯好整函数保证不会一次取满100的值。

公式缺陷:

第一:会出现相同数字情况。

第二:有0值出现