ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: gensen

[求助] 请教一个随机分组的问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-10-5 12:16 | 显示全部楼层
Private Sub CommandButton1_Click()
Range("a2:d65535").ClearContents
Dim arr(), brr()
ReDim arr(1 To 60000, 1 To 4)
ReDim brr(0 To 20)
brr(0) = 100: brr(1) = 50: brr(2) = 25

haha:
For i = 1 To 7
k0 = k
If i > 2 Then
   k2 = Application.Max(0, 2 * brr(i - 1) - brr(i - 2))
   brr(i) = Int(Rnd() * (brr(i - 1) - k2 + 1)) + k2
End If

For j = i To 0 Step -1
    k = k + 1
    arr(k, 1) = i
    arr(k, 2) = j
    arr(k, 3) = Application.Combin(i, j)

    If j = i Then
       arr(k, 4) = brr(i)
    ElseIf j = 0 Then
        arr(k, 4) = brr(0)
        For l = 1 To i
          arr(k, 4) = arr(k, 4) - arr(k0 + l, 3) * arr(k0 + l, 4)
        Next
    Else
       arr(k, 4) = arr(k - 1 - i, 4) - arr(k - 1, 4)
    End If
    If arr(k, 4) < 0 Then k = 0: GoTo haha
Next
Next

[a2].Resize(60000, 4) = arr
End Sub


N集合问题.rar (10.08 KB, 下载次数: 3)

TA的精华主题

TA的得分主题

发表于 2018-10-5 12:17 | 显示全部楼层
brr(0) = 100: brr(1) = 50: brr(2) = 25 代入运算程序 随机测试,
1、i=1 to 7集合 找到了3组解  ;
2、i=1 to 8 集合 测试多次 ,找不到合理解 (除非 修改 初始参数值 ,比如 100 变 150)。
从vba 测试结果看, 最大只能找出  7组数 满足 每2个 集合有 25相同数字。

q22.JPG

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-16 12:59 , Processed in 0.016731 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表