这是一个创建于 3570 天前的主题,其中的信息可能已经有所发展或是发生改变。
需要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
![yuguig](https://cdn.v2ex.com/avatar/cdfa/2a96/37945_normal.png?m=1399380734) |
|
1
yuguig 2014-09-17 12:02:48 +08:00 via iPhone
每个数90~110之间?好矛盾的限定…… 只需要9个随机数,之和小于100
|
![jybox](https://cdn.v2ex.com/avatar/a005/7a00/15969_normal.png?m=1676930794) |
|
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
|
![jybox](https://cdn.v2ex.com/avatar/a005/7a00/15969_normal.png?m=1676930794) |
|
3
jybox 2014-09-17 12:10:56 +08:00
|
![baocool](https://cdn.v2ex.com/avatar/16ee/eb49/22786_normal.png?m=1340901616) |
|
4
baocool 2014-09-17 12:16:08 +08:00
实际需要并不特指10组数/和为100,所以,亲们,直接给个EXCEL 表吧
|