以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 随机抽取的问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=107331) |
||||
-- 作者:douglas738888 -- 发布时间:2017/9/26 9:39:00 -- 随机抽取的问题 请教老师,下面代码根据帮助上洗牌抽取,
想实现的是,例如,第一次随机抽取了其中的10行,第二次再随机抽取10行,但是第二次随机抽取的10行中包含第一次抽取中的5行
目前第一次抽取的行比较相邻排序,99,82,76,61,50,48,33,25,10 怎样能再分开一些,目前有1000多行
第一次 第二次 11 22 12 67 15 56 19 11 18 20 13 71 16 15 14 49 20 13 22 99
Dim cnt As Integer = DataTables("表C").DataRows.Count Dim ids1 As New List(of Integer) \'用于存储洗牌前的位置 Dim ids2 As New List(of Integer) \'用于存储洗牌后的位置 For i As Integer = 0 To cnt -1 \'准备初始的牌 ids1.add(i) Next For i As Integer = 0 To cnt - 1 \'开始洗牌 ids2.Add(ids1(rand.Next(0,ids1.count))) Next Tables("表C").StopRedraw() DataTables("表C").ReplaceFor("选择",False) For i As Integer = 0 To 10 - 1 \'10为要抽取的行数 DataTables("表C").DataRows(ids2(i))("选择") = True Next Tables("表C").Filter = "[选择] = True" Tables("表C").ResumeRedraw() [此贴子已经被作者于2017/9/26 10:06:47编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2017/9/26 10:10:00 -- 帮助文档洗牌有问题,换一种方式
http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=86672&skin=0
你控制好洗牌次数(越多越好),就可以洗得很乱了;再有就是选取数据的时候,你不一定是从上往下选取10行嘛,选取数据的时候,你还能再随机选10个。 |
||||
-- 作者:douglas738888 -- 发布时间:2017/9/26 12:19:00 -- 老师,第一个问题,output出来的行与“选择”出来的行不一样 ,output显示出来的数字是行号还是???
第二个问题,如何在第二次以后的洗牌与抽取中均包含上一次随机出现的50%的行,相当于第二次随机抽取的10行中包含上一次已经出现的5行
下面代码在命令窗口测试的 数据在表C Dim dt As DataTable = DataTables("表C")
[此贴子已经被作者于2017/9/26 14:13:16编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2017/9/26 14:37:00 -- 1、ids存放的是行号,不是你的指标列的数据;
2、红色代码表示上次的行号,请自行用全局变量存放其值
Dim pids() As String = "1,3,5,9,10,12,20,15,16,17".split(",") Dim dt As DataTable = DataTables("表C") Do While count < 5 Do While count < 10
|
||||
-- 作者:douglas738888 -- 发布时间:2017/9/26 16:35:00 -- 老师,我对全局代码不是很熟悉,我在全局代码中这样写对吗 还是写VAR
Public pids() As String = "1,3,5,9,10,12,20,15,16,17".split(",")
另外,这段代码的是存原来5行的内容,是吗,如果上面的代码调整为抽取20行,是否在"1,3,5,9,10,12,20,15,16,17",任意添加行号就可以了 Do While count < 5 \'改成10也抽取10行,另外<10 的那段代码,改成5也是5行????
[此贴子已经被作者于2017/9/26 16:38:35编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2017/9/26 17:59:00 -- 全局代码
public pstr As String = ""
按钮代码
Dim pids() As String = pstr.split(",") Dim dt As DataTable = DataTables("表C") If pids.length >= num / 2 |