C++随机数与hadoop stream 排序

一、C++生成随机数

C++中可以用srand和rand配合产生伪随机数。rand产生伪随机数以前需要系统提供产生伪随机数序列的种子,rand根据种子的值产生一系列的伪随机数。如果系统提供的种子没有变化,则每次产生的随机数序列一样。

srand(unsigned seed)可以通过seed改变系统提供的种子值,从而使每次调用rand生成的随机数的值不同。通常可以用系统时间改变随机值。srand(time(NULL))。

1. 使用两个函数需要包含头文件stdlib.h
2. 使用time要包含头文件time.h,默认情况下种子值为1。
3. rand可以生成0~RAND_MAX之间任何一个随机数。
4. 有时候要使用除法:
rand()/(RAND_MAX+1.0);值域[0, 1)
rand()/(RAND_MAX+0.0);值域[0, 1]
此时一定要注意,后面RAND_MAX+1.0,不要写成RAND_MAX+1RAND_MAX的值可能为2147483647,加1之后可能会溢出

二、 Hadoop stream排序配置

    -D stream.num.map.output.key.fields=3 \\配置key个数
        -D mapred.text.key.partitioner.options='-k1,1' \\指定reduce阶段数据划分的字段
        -D mapred.text.key.comparator.options='-k2,2nr -k3,3nr -k1,1' \\指定map完成后,排序的key
        -D mapred.output.key.comparator.class=org.apache.hadoop.mapred.lib.KeyFieldBasedComparator \\排序比较类
        -partitioner org.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner \








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值