Foxtable(狐表)用户栏目专家坐堂 → 如何产生不重复的随机数


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

主题:如何产生不重复的随机数

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


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

换一种思路,如

 

Dim dt As DataTable = DataTables("表C")
dt.DeleteFor("")
Dim cnt As Integer = 999
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()
Dim ks As Integer = Rand.Next(1000-300)
For i As Integer = 1 To 300
    Dim dr = dt.addnew
    dr("第一列")=ids(i+ks-1)
Next
dt.ResumeRedraw()

[此贴子已经被作者于2018/11/21 9:14:48编辑过]

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


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

以下是引用明天的灵在2018/11/20 15:05:00的发言:
谢谢甜版主,结果对的,可惜看不懂后面二段代码
[此贴子已经被作者于2018/11/20 15:14:17编辑过]

 

1、把0-999的数值取出来,存放起来;

 

2、开始洗牌:随机交互两个位置的数字,交换任意次数,打乱数字;

 

3、取出任意一个位置的300个数字。


 回到顶部