以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]关于随机问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=133625)

--  作者:wenzi187
--  发布时间:2019/4/17 12:08:00
--  [求助]关于随机问题
如附件,
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试 - 副本.zip


目前第一个按钮随机抽取已经完成
达到的目的是在数量输入20,随机抽取20个单位数量。
现在问题是:
第二个按钮随机分配管段,表C第一列为负责人名字
按下名字后,可以根据抽取数量,比如负责人是固定的五人

在点击随机抽取管段是,在最后一列随机填充负责人名字,
而且是平均的,例如抽取10个单位后,每个负责人只出现两次,抽取15个单位每个负责人出现3次
如果非整数,比如16个单位,那么只有一个人多出现一次
我看了好多案例
都没有相符的
请高抬贵手
谢谢



--  作者:有点色
--  发布时间:2019/4/17 12:53:00
--  

Dim dt1 As DataTable = DataTables("抽取数据表")
Dim dt2 As DataTable = DataTables("表C")
Dim count As Integer = 20

Dim cnt As Integer = count
Dim ids(cnt - 1) As Integer
For i As Integer = 0 To cnt -1
    ids(i) = i
Next
For i As Integer = 0 To cnt  \'洗牌次数
    Dim id1 As Integer = rand.Next(0,cnt)
    Dim id2 As Integer = rand.Next(0,cnt)
    Dim vid As Integer = ids(id1)
    ids(id1) = ids(id2)
    ids(id2) = vid
Next

Dim rys = dt2.GetValues("第一列", "第一列 is not null")
For i As Integer = 0 To ids.length-1
    Dim ndr = dt1.AddNew
    ndr("所属管段") = ids(i)
    ndr("立刻就看见") = rys(i Mod 5)
Next


--  作者:wenzi187
--  发布时间:2019/4/17 16:12:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20190417160828.png
图片点击可在新窗口打开查看
可能我没表述清楚,现在的情况是抽取之后,点击随机管段,是在下面增加了相应的行数
我的想法是直接添加在后面。
如图
图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20190417160931.png
图片点击可在新窗口打开查看

--  作者:有点甜
--  发布时间:2019/4/17 16:34:00
--  

不理解你什么意思

 

Dim dt1 As DataTable = DataTables("抽取数据表")
Dim dt2 As DataTable = DataTables("表C")
Dim count As Integer = 20

Dim cnt As Integer = dt1.datarows.count
Dim ids(cnt - 1) As Integer
For i As Integer = 0 To cnt -1
    ids(i) = i
Next
For i As Integer = 0 To cnt*10  \'洗牌次数
    Dim id1 As Integer = rand.Next(0,cnt)
    Dim id2 As Integer = rand.Next(0,cnt)
    Dim vid As Integer = ids(id1)
    ids(id1) = ids(id2)
    ids(id2) = vid
Next
Dim rnd = rand.Next(cnt-count)
Dim rys = dt2.GetValues("第一列", "第一列 is not null")
For i As Integer = 0 To count-1
    Dim dr As DataRow = dt1.DataRows(rnd+i)
    dr("立刻就看见") = rys(i Mod 5)
Next