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


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

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

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


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

想达到的效果是,随机选取任意数量(可以选择)的第一列,然后和第二列随意两个进行组合,第三列跟随第一列。得出新的表,表B
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.zip

例如:周一  1、上网 2、打球  刘
        周三  1、锻炼 2、打球  王

可以直接在项目上写代码就行。
这个我试了随机组合,都不得要领。麻烦大师操刀。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/12/18 11:35:00 [只看该作者]

参考例子

 

下载信息  [文件大小:316.0 KB  下载次数:37]
图片点击可在新窗口打开查看点击浏览该文件:排列组合.table


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


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

这个我知道,我的意思不是简单的排列组合啊。是生成表B之后,还是要一列一列的。而且有两个随机。
不能组成一句话。在表B里面还是要分别列出来。第一列  周一  周三   第二列  干什么  第三列 谁
简单的排列组合包括随机抽取两行我都知道。怎么融合?


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/12/18 14:32:00 [只看该作者]

Dim dt As DataTable = DataTables("表A")
Dim drs = dt.Select("第一列 is not null")
For Each dr As DataRow In drs
    Dim ndr As DataRow = DataTables("表B").AddNew
    ndr("第一列") = dr("第一列")
    ndr("第三列") = dr("第三列")
    Dim fdr1 = drs(Rand.Next(0, drs.count))
    Dim fdr2 = drs(Rand.Next(0, drs.count))
    ndr("第二列") = fdr1("第二列") & "," & fdr2("第二列")
Next

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


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

恩?这样也挺机智的,但是这样的组合就有重复值了啊。会出现连续的吃饭吃饭。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/12/18 15:07:00 [只看该作者]

Dim dt As DataTable = DataTables("表A")
Dim drs = dt.Select("第一列 is not null")
For Each dr As DataRow In drs
    Dim ndr As DataRow = DataTables("表B").AddNew
    ndr("第一列") = dr("第一列")
    ndr("第三列") = dr("第三列")
    Dim i1 = Rand.Next(0, drs.count)
    Dim i2 = Rand.Next(0, drs.count)
    Do While i1 = i2
        i2 = Rand.Next(0, drs.count)
    Loop
    Dim fdr1 = drs(i1)
    Dim fdr2 = drs(i2)
    ndr("第二列") = fdr1("第二列") & "," & fdr2("第二列")
Next

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


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

如果第一列数量多,第二列数量少,执行代码的时候就会出现这样的情况
图片点击可在新窗口打开查看此主题相关图片如下:qq图片20171218171338.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20171218171328.png
图片点击可在新窗口打开查看


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/12/18 17:25:00 [只看该作者]

Dim dt As DataTable = DataTables("表A")
Dim drs = dt.Select("第二列 is not null")
For Each dr As DataRow In dt.Select("第一列 is not null")
    Dim ndr As DataRow = DataTables("表B").AddNew
    ndr("第一列") = dr("第一列")
    ndr("第三列") = dr("第三列")
    Dim i1 = Rand.Next(0, drs.count)
    Dim i2 = Rand.Next(0, drs.count)
    Do While i1 = i2
        i2 = Rand.Next(0, drs.count)
    Loop
    Dim fdr1 = drs(i1)
    Dim fdr2 = drs(i2)
    ndr("第二列") = fdr1("第二列") & "," & fdr2("第二列")
Next

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


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

下面是随机抽取。我大约要抽取2-5行。于是我设定了一个变量R。但是他说从字符串“ & r.text & ”到类型“Double”的转换无效。能看看是哪错了么。

Dim ids As String
Dim lst As new List(of String)
Dim r As WinForm.TextBox = e.Form.Controls("TextBox1")
Dim cnt As Integer = DataTables("表B").DataRows.Count
Do
    Dim Id As Integer = rand.Next(0,cnt)
    id = DataTables("表B").DataRows(id)("_Identify")
    If lst.Contains(id) =False Then
        lst.Add(id)
    End If
    ids = ids & id & ","
Loop While lst.count = " & r.text & "   'r是要抽取的行数
Tables("表B").Filter = "[_Identify] In (" & ids.Trim(",") & ")"

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/12/19 10:33:00 [只看该作者]

改成这样

 

Loop While lst.count < val(r.text)


 回到顶部
总数 12 1 2 下一页