这是一个创建于 3687 天前的主题,其中的信息可能已经有所发展或是发生改变。
需要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-09-17 12:02:48 +08:00 via iPhone
每个数90~110之间?好矛盾的限定…… 只需要9个随机数,之和小于100
|
|
|
2
jybox 2014-09-17 12:10:21 +08:00
这个思路如何:
result = []
for 0 .. 99 pos = random(0, 9)
if result[pos] result[pos] += 1 else result[pos] = 1
|
|
|
3
jybox 2014-09-17 12:10:56 +08:00
|
|
|
4
baocool 2014-09-17 12:16:08 +08:00
实际需要并不特指10组数/和为100,所以,亲们,直接给个EXCEL 表吧
|