一、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+1,RAND_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 \