一个生成10的N次方个整数的一段小程序,彰显出的大智慧
魏仁言 2010.8.28
最近在学习Hadoop,上次用Map/Reduce模型写个了对大量整数数字求和的程序,为了测试就要生成大量测试数据,我用Ruby写了个随机生成整数,并将整数按指定的格式写入文本文件,然后将生成的数据输入Map/Reduce程序(NumerSum),进行求和。针对这样的小功能我相信学过编程的都能写出来,因为这个问题很简单,实际要做的就是给定一个数值N,它来定义生成的数据量,当N=3时,就是生成1000个随机数字然后将数据写入文件,生成过程用For循环,循环个1000次就可以了。我想要的结果是生成的数据文>=10M,最低要求至少N>=5,反正是多多益善。现在问题与相应的解决方法也有了,下面我就逐步介绍下我的整个实现过程。
问题:生成一个包含有10的N次方个整数的文本文件,N可以无限大,程序的运行时间要在可以忍受的程度,就是说程序的性能要求比较高。
解决方法:
1.定义一个数组m,通过Random生成随机数n,将数值n存入数组m内,并且随机数要包含有负数,限定随机数n值在-99=<n<=99之间
2.从数组m内,读取生成的结果,写入文件num.txt
我分别用两种方式去实现我的代码,第1种方式是用简单的循环方法实现的,第2种方式是用多线程将要生成的整数任务,分解成多个小任务,分配给T个线程去执行