excel随机函数出来的数相加等于一个想要的固定值 比如 产生20个随机数想加等于200而且每个数都不大于3最好用VBA 错了 相加总数是50
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/24 03:30:26
excel随机函数出来的数相加等于一个想要的固定值 比如 产生20个随机数想加等于200而且每个数都不大于3最好用VBA 错了 相加总数是50
excel随机函数出来的数相加等于一个想要的固定值 比如 产生20个随机数想加等于200而且每个数都不大于3
最好用VBA 错了 相加总数是50
excel随机函数出来的数相加等于一个想要的固定值 比如 产生20个随机数想加等于200而且每个数都不大于3最好用VBA 错了 相加总数是50
Option Explicit
Function getRandom(total As Integer, max As Integer, num As Integer) As Boolean
'total是最后要得到的总和,max是最大不能超过的数,num是产生多少个随机数
Dim ranNum As Single '随机数
Dim leftNum As Single '剩余数
Dim conNumTotal As Single '确定的剩余数
Dim i As Integer
'判断条件是否满足
getRandom = True
If max * num < total Then
'根本就不可能满足条件,直接退出
getRandom = False
Exit Function
End If
conNumTotal = 0
For i = 1 To num - 1 Step 1
DoEvents
Randomize '随机化
'很显然地所有的ranNum都满足小于max的条件
ranNum = Rnd() * max '产生随机数
'判断当前数据的合理性
leftNum = total - conNumTotal - ranNum
If max * (num - i) < leftNum Then
'无法满足基本要求,退回序列
i = i - 1
Else
'满足要求,继续
conNumTotal = conNumTotal + ranNum
Debug.Print ranNum
End If
'自行处理产生的ranNum
Next i
'最后一个随机数
ranNum = total - conNumTotal
Debug.Print ranNum
debug.print "over"
'由于最后一个数
End Function
Sub a()
getRandom 200, 11, 20
End Sub