以文本方式查看主题 - Foxtable(狐表) (http://www.foxtable.com/bbs/index.asp) -- 专家坐堂 (http://www.foxtable.com/bbs/list.asp?boardid=2) ---- [求助]关于随机生成的问题 (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=111231) |
||||
-- 作者:wenzi187 -- 发布时间:2017/12/18 11:19:00 -- [求助]关于随机生成的问题 想达到的效果是,随机选取任意数量(可以选择)的第一列,然后和第二列随意两个进行组合,第三列跟随第一列。得出新的表,表B
。 例如:周一 1、上网 2、打球 刘 周三 1、锻炼 2、打球 王 可以直接在项目上写代码就行。 这个我试了随机组合,都不得要领。麻烦大师操刀。
|
||||
-- 作者:有点甜 -- 发布时间:2017/12/18 11:35:00 -- 参考例子
|
||||
-- 作者:wenzi187 -- 发布时间:2017/12/18 12:23:00 -- 这个我知道,我的意思不是简单的排列组合啊。是生成表B之后,还是要一列一列的。而且有两个随机。 不能组成一句话。在表B里面还是要分别列出来。第一列 周一 周三 第二列 干什么 第三列 谁 简单的排列组合包括随机抽取两行我都知道。怎么融合?
|
||||
-- 作者:有点甜 -- 发布时间: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 -- 发布时间:2017/12/18 15:00:00 -- 恩?这样也挺机智的,但是这样的组合就有重复值了啊。会出现连续的吃饭吃饭。 |
||||
-- 作者:有点甜 -- 发布时间: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 -- 发布时间:2017/12/18 17:15:00 -- 如果第一列数量多,第二列数量少,执行代码的时候就会出现这样的情况 此主题相关图片如下:qq图片20171218171338.png |
||||
-- 作者:有点甜 -- 发布时间: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 -- 发布时间: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(",") & ")"
|
||||
-- 作者:有点甜 -- 发布时间:2017/12/19 10:33:00 -- 改成这样
Loop While lst.count < val(r.text) |