Foxtable(狐表)用户栏目专家坐堂 → [求助]关于随机问题


  共有1767人关注过本帖树形打印复制链接

主题:[求助]关于随机问题

帅哥哟,离线,有人找我吗?
wenzi187
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:45 积分:477 威望:0 精华:0 注册:2017/4/4 11:20:00
[求助]关于随机问题  发帖心情 Post By:2019/4/17 12:08:00 [只看该作者]

如附件,
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试 - 副本.zip


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

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



 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By: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
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:45 积分:477 威望:0 精华:0 注册:2017/4/4 11:20:00
  发帖心情 Post By:2019/4/17 16:12:00 [只看该作者]


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

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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


 回到顶部