V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
baocool
V2EX  ›  程序员

EXCEL 随机数如何限定范围,并让其总和等于一个定值?

  •  1
     
  •   baocool · 2014-09-17 10:41:14 +08:00 · 7898 次点击
    这是一个创建于 3719 天前的主题,其中的信息可能已经有所发展或是发生改变。
    需要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
        1
    yuguig  
       2014-09-17 12:02:48 +08:00 via iPhone
    每个数90~110之间?好矛盾的限定……
    只需要9个随机数,之和小于100
    jybox
        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
        3
    jybox  
       2014-09-17 12:10:56 +08:00
    baocool
        4
    baocool  
    OP
       2014-09-17 12:16:08 +08:00
    实际需要并不特指10组数/和为100,所以,亲们,直接给个EXCEL 表吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3624 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 10:21 · PVG 18:21 · LAX 02:21 · JFK 05:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.