随机不重复生成大数据

最近做了这个一个项目,
项目描述:要根据2个不同的规则生成不重复的数据,其中规则1有120000左右的量,规则2则是有230多的量,大致算一下这个数据量就有27600000。
而这只是其中的一个部分。从这批数据中每次随机取出500条,要求不能友重复的数据。
从这个需求来看是打数据量,并且要求要求数据随机不重复,就因为随机不重复这个地方的问题。
随机和不重复本来就是两个不同的要求,如果只考虑其中一个这个问题很容易解决
比如:从中随机取数据,不考虑重复的问题,这个问题容易解决;只考虑不重复这样也号解决问题,主要就是有规则
还有就是先把所有的数据都组合好,然后从中随机取(这个会消耗很大的存取空间)
为了解决这个问题想到一个方法,先把这些规则进行排列组合


即下图


    规则11 规则12  ...... 规则1n

       规则21  0 0      ......    0

       规则22  0 0      ......    0

.             0                0 ......     0
.       0                0     .......    0
规则2n 0                0     .......     0


如果用了就把相应的位置1即可表示该组合被用了,那么就需要先生成这个文件的索引,即上面这个文件如下所示


初始化部分
00000000000000000000000
00000000000000000000000
00000000000000000000000
00000000000000000000000
00000000000000000000000


使用后的数据


10000000000000000000000
00000000000000100000000
00000000000100000000000
00000000000010000000000
00000000000000100000000


# 全部使用完
11111111111111111111111
11111111111111111111111
11111111111111111111111
11111111111111111111111
11111111111111111111111


但是这些组合起来后文件还是很大,快10M了,能不能把这个文件进异步减小,方法是有的
可以用16进制,如果是在一行上用就可以把文件减少到原来的1/4,要想更小可以用32,64进制,这样可以把文件
减少到1/6,如果行列都用的话则可以减少到最大是1/18 .为什么不是1/36是有原因的,因为这样一行一列就需要两个字符了
既然是2个字符那就要乘以2了,也就算18。
这样就给程序增加复杂度。


接下来就要把这个上面的索引和数据进行转换了。具体的程序就不贴出来了











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值