以文本方式查看主题

-  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=14828)

--  作者:pensa
--  发布时间:2011/12/3 20:16:00
--  [求助]

请问,Foxtable可不可以实现数据的随机抽取?

我有一批数据,其总量太大,我欲随机抽取其中的10%,请问这可以在Foxtable中实现吗?

如何实现?

 

不胜感激!!

 

Pensa

 


--  作者:czy
--  发布时间:2011/12/3 23:46:00
--  

可以轻松实现。

楼主做个实例发上来吧。


--  作者:liguichuan
--  发布时间:2011/12/4 4:06:00
--  

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:抽样.table

楼主,看一下,行不行?

我试了一下,按我这样的方法,如果数据量太大的话,可能会比较慢,不知有无其它更为优化的办法呢?因为在不停地查找比较。

还有,如何生成不重复随机数呢?

请大家赐教~!


--  作者:pensa
--  发布时间:2011/12/4 9:50:00
--  

谢谢大家的回复。。

数据的楼上设计的基本一样,会有5000到10000个左右,我欲随机抽取其中的10%,不重复的。。

附件中是我的数据在Excel中的较少的一个,在access中没有试出来,希望从这里能够得到答案!

谢谢大家

 


--  作者:liguichuan
--  发布时间:2011/12/4 12:06:00
--  

刚试了一下,从52163行数据中抽取出10%,也就是5216行数据,包括查找,复制三列数据,保存数据在内,总共要花差不多95秒的时间。

原本想在窗中的标签中显示“抽样中……”,可是不知道怎么回事,并没有显示,反而是结束抽样后有显示。代码都在按键的事件中写。

请哪位大虾给指点一下吧。

现在关心如何高效生成不重复的随机数。通过成生再判断的方式较浪费效率。假如数据是500万行呢?那肯定卡死。


--  作者:mr725
--  发布时间:2011/12/4 14:08:00
--  

DataTables("抽样数据").DeleteFor("[序列号] is not null")

Tables("基础数据").Filter = "[序列号] is not null"
Dim 非空行数 As Integer = Tables("基础数据").Rows.Count
Dim 随机数 As Integer
Dim 抽样行数 As Integer = 非空行数 * (CDbl(Forms("窗口1").Controls("TextBox1").value) / 100 )

Tables("抽样数据").addnew(抽样行数)
For i As Integer = 0 To 抽样行数  -1
   Tables("抽样数据")(i,"序列号") = Rand.Next(1,非空行数)
Next


--  作者:pensa
--  发布时间:2011/12/4 15:00:00
--  

能详细点吗,具体怎么操作?

查找,复制,保存。代码?

俺是初学者,看得糊里糊涂。。


--  作者:mr725
--  发布时间:2011/12/4 15:20:00
--  

放到你的按钮中, 最后再加上一行: MainTable = Tables("抽样数据")

或命令窗口也可。


--  作者:liguichuan
--  发布时间:2011/12/4 16:10:00
--  
6楼的好像还差点吧,抽样出来的会有出现重复抽样的情况呀,而且好像只是把保存的时间另外剥离了出来而已。
--  作者:pensa
--  发布时间:2011/12/4 17:24:00
--  
放到你的按钮中, 最后再加上一行: MainTable = Tables("抽样数据") 或命令窗口也可。

 

6楼的好像还差点吧,抽样出来的会有出现重复抽样的情况呀,而且好像只是把保存的时间另外剥离了出来而已。 ?