Foxtable(狐表)用户栏目专家坐堂 → [求助]如何根据显示人员数,进行随机抽取不重复的数,并且抽取后不允许更改


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

主题:[求助]如何根据显示人员数,进行随机抽取不重复的数,并且抽取后不允许更改

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/7 12:41:00 [显示全部帖子]


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/7 16:08:00 [显示全部帖子]


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/8 8:46:00 [显示全部帖子]

Dim dt As DataTable = DataTables("表A")
Dim cnt As Integer = dt.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 \ 2 '洗牌次数
    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
dt.StopRedraw()
For i As Integer = 0 To DataTables("表A").DataRows.count-1
    DataTables("表A").DataRows(i)("随机数")=ids(i)
Next
dt.ResumeRedraw()

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/8 9:12:00 [显示全部帖子]

DataTables("表A").DataRows(i)("随机数")=ids(i)+1

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/8 10:14:00 [显示全部帖子]

Dim dt As Table = Tables("表A")
Dim cnt As Integer = dt.BottomPosition - dt.TopPosition
Dim ids(cnt) As Integer
For i As Integer = 0 To cnt
    ids(i) = i
Next
For i As Integer = 0 To cnt \ 2 '洗牌次数
    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
dt.StopRedraw()
For i As Integer = dt.TopPosition To dt.BottomPosition
    dt.Rows(i)("第一列")=ids(i-dt.TopPosition)+1
Next
dt.ResumeRedraw()

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/8 12:22:00 [显示全部帖子]

Dim dt As Table = Tables("人员抽取_人员")
Dim ls As new List(Of Row)
For Each r As Row In dt.Rows
    If r("选择") Then
        ls.add(r)
    End If
Next
Dim cnt As Integer = ls.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 \ 2 '洗牌次数
    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
dt.StopRedraw()
For i As Integer = 0 To ls.count-1
    ls(i)("面试顺序")=ids(i)+1
Next
dt.ResumeRedraw()

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/8 15:27:00 [显示全部帖子]

测试,没问题。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/8 17:21:00 [显示全部帖子]

做一个按钮,直接把代码拷贝进去,即可。你现在测试的结果是什么?


 回到顶部