这是一个创建于 4210 天前的主题,其中的信息可能已经有所发展或是发生改变。
需要10个随机数,总和为100,每个数在90和110的范围内
目前使用
Sub a()
Range("b2:b11") = ""
For i = 2 To 10
Do Until WorksheetFunction.CountIf(Range("b:b"), Range("b" & i)) = 1 _
And [b1] - WorksheetFunction.Sum(Range("b2:b" & i)) >= [E2] * (11 - i) _
And [b1] - WorksheetFunction.Sum(Range("b2:b" & i)) <= [E3] * (11 - i)
Range("b" & i) = Int(Rnd() * ([E3] - [E2])) + [E2]
Loop
Next i
[b11] = [b1] - WorksheetFunction.Sum(Range("b2:b10"))
End Sub
但运行非常容易就导致excel 无法响应,求助
4 条回复 2014-09-17 12:16:08 +08:00  | | 1 yuguig 2014 年 9 月 17 日 via iPhone 每个数90~110之间?好矛盾的限定…… 只需要9个随机数,之和小于100 |
 | | 2 jybox 2014 年 9 月 17 日 这个思路如何:
result = []
for 0 .. 99 pos = random(0, 9)
if result[pos] result[pos] += 1 else result[pos] = 1 |
 | | 4 baocool 2014 年 9 月 17 日 实际需要并不特指10组数/和为100,所以,亲们,直接给个EXCEL 表吧 |