免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: wenjun3000
打印 上一主题 下一主题

[文本处理] 生成1亿个不重复的8位随机整数,请大神给代码! [复制链接]

论坛徽章:
2
程序设计版块每日发帖之星
日期:2016-08-17 06:20:00每日论坛发贴之星
日期:2016-08-17 06:20:00
11 [报告]
发表于 2016-08-16 18:22 |只看该作者
请问如何运行?

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-08-07 06:20:00
12 [报告]
发表于 2016-08-16 19:57 |只看该作者
那篇博文不是收录在C里面的吗 应该是C?

论坛徽章:
6
15-16赛季CBA联赛之新疆
日期:2016-03-22 22:34:5915-16赛季CBA联赛之山东
日期:2016-04-11 09:08:41程序设计版块每日发帖之星
日期:2016-06-28 06:20:00程序设计版块每日发帖之星
日期:2016-07-19 06:20:00每日论坛发贴之星
日期:2016-07-19 06:20:0015-16赛季CBA联赛之青岛
日期:2016-07-20 22:44:17
13 [报告]
发表于 2016-08-17 12:08 |只看该作者
0-9:
$> perl -e '%a=map {$_=>""} (0..9); printf "%08d\n", $_ for(keys %a);'
00000009
00000000
00000008
00000006
00000007
00000003
00000001
00000005
00000004
00000002

论坛徽章:
0
14 [报告]
发表于 2016-08-17 17:25 |只看该作者
符合位数要求的整数从00000000到99999999恰好有1亿个,如果依次放入二维数组的话,一个简单的循环语句就能完成主要功能了。如果想随机取出其中某个整数,再写一段随机数生成代码,去读取二维数组中某个下标的元素就行了。不用很复杂。几十行代码足够了。

论坛徽章:
2
程序设计版块每日发帖之星
日期:2016-08-17 06:20:00每日论坛发贴之星
日期:2016-08-17 06:20:00
15 [报告]
发表于 2016-08-17 17:37 |只看该作者
请大神给代码时,顺便写下如何使用啊

论坛徽章:
13
CU大牛徽章
日期:2013-04-17 11:20:3615-16赛季CBA联赛之吉林
日期:2017-05-25 16:45:4715-16赛季CBA联赛之福建
日期:2017-03-13 11:33:442017金鸡报晓
日期:2017-02-08 10:39:422017金鸡报晓
日期:2017-01-10 15:13:29IT运维版块每日发帖之星
日期:2016-03-15 06:20:01IT运维版块每日发帖之星
日期:2015-10-02 06:20:00CU十二周年纪念徽章
日期:2013-10-24 15:41:34CU大牛徽章
日期:2013-09-18 15:15:45CU大牛徽章
日期:2013-09-18 15:15:15CU大牛徽章
日期:2013-04-17 11:46:39CU大牛徽章
日期:2013-04-17 11:46:28
16 [报告]
发表于 2016-08-18 09:05 |只看该作者
其实这是一个经典的洗牌算法啊。因为8位以内的10进制数刚好是1亿个,所以所谓的不重复只能是取所有的数而已,再者,所谓的随机只能是顺序是随机的。为了减少复杂度,其实可以构建这样一个算法来实现顺序的随机(同时保证唯一性,即每个元素只取1次)。
1. 构造出1亿的数组(顺序的)A,当前数组有效长度(记为L)为1亿
2.第N次取出数值时(N=0,1,2...99999999 )
    2.1 取一个范围为[0, L-N) 内的随机整数,计为R
    2.2 交换 A[N] 和  A[N+R]
    2.3 输出A[N]为第N次的取出的数

这个算法的优点时交换的步骤不多(如果只取2000个就只交换2000次),而且很容易保证数据取出的唯一性

而完整的洗牌算法则是直接随机交换N次再取出需要的数(可以再通过抽取原则进一步改变随机顺序)

论坛徽章:
28
15-16赛季CBA联赛之八一
日期:2016-02-22 19:10:4215-16赛季CBA联赛之深圳
日期:2016-12-01 10:34:0415-16赛季CBA联赛之新疆
日期:2016-12-07 10:24:2915-16赛季CBA联赛之同曦
日期:2016-12-15 12:06:43CU十四周年纪念徽章
日期:2016-12-18 13:03:4415-16赛季CBA联赛之吉林
日期:2017-01-03 15:52:2515-16赛季CBA联赛之辽宁
日期:2017-01-04 14:58:2415-16赛季CBA联赛之辽宁
日期:2017-01-15 09:42:512016科比退役纪念章
日期:2017-02-06 17:21:50黑曼巴
日期:2017-02-10 15:46:1215-16赛季CBA联赛之上海
日期:2017-03-18 10:14:5415-16赛季CBA联赛之青岛
日期:2017-03-18 22:00:44
17 [报告]
发表于 2016-08-18 16:49 |只看该作者
  1. seq -w 0 99999999|shuf > randomSeqFile
复制代码

论坛徽章:
2
程序设计版块每日发帖之星
日期:2016-08-17 06:20:00每日论坛发贴之星
日期:2016-08-17 06:20:00
18 [报告]
发表于 2016-08-18 18:24 |只看该作者
回复 17# moperyblue

运行5分钟左右,出现以下错误
   

论坛徽章:
28
15-16赛季CBA联赛之八一
日期:2016-02-22 19:10:4215-16赛季CBA联赛之深圳
日期:2016-12-01 10:34:0415-16赛季CBA联赛之新疆
日期:2016-12-07 10:24:2915-16赛季CBA联赛之同曦
日期:2016-12-15 12:06:43CU十四周年纪念徽章
日期:2016-12-18 13:03:4415-16赛季CBA联赛之吉林
日期:2017-01-03 15:52:2515-16赛季CBA联赛之辽宁
日期:2017-01-04 14:58:2415-16赛季CBA联赛之辽宁
日期:2017-01-15 09:42:512016科比退役纪念章
日期:2017-02-06 17:21:50黑曼巴
日期:2017-02-10 15:46:1215-16赛季CBA联赛之上海
日期:2017-03-18 10:14:5415-16赛季CBA联赛之青岛
日期:2017-03-18 22:00:44
19 [报告]
发表于 2016-08-18 18:45 |只看该作者
回复 18# wenjun3000


    内存不足

论坛徽章:
2
程序设计版块每日发帖之星
日期:2016-08-17 06:20:00每日论坛发贴之星
日期:2016-08-17 06:20:00
20 [报告]
发表于 2016-08-18 19:12 |只看该作者
回复 19# moperyblue


那只能放弃了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP