日期:2014-05-20  浏览次数:20700 次

随机数抽取问题
TXT现有数据如下:
1 1 1 1
1 1 1 1
......
1 1 1 1
共500行。
有个需求是这样的
从数字序列(1 到 13)范围随机抽取一个替换每行四个1其中一个。结果如:
1 4 1 1
9 1 1 1 等类似500个。
求源码。先谢谢各位了。

------解决方案--------------------

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Random;

public class TestAlter {
//读取classpath下的temp。txt文件,对其每行的数据随机替换一个 1-13的数
public void alterData() throws IOException{
//创建文件输入流对象
FileInputStream fis = new FileInputStream("temp.txt");
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);

//创建文件输出流对象
FileOutputStream fos = new FileOutputStream("temp1.txt");
OutputStreamWriter osw = new OutputStreamWriter(fos);
BufferedWriter bw = new BufferedWriter(osw);
//创建随机数生成对象
Random rand = new Random();
String str = "";

while(null!=(str=br.readLine())){
//随机位上的数变1-13之间的随机数
StringBuffer sb = new StringBuffer();
String[] ss = str.split(" ");
ss[rand.nextInt(4)]=String.valueOf(rand.nextInt(13)+1);
for(String s:ss){
sb.append(s).append(" ");
}
bw.write(sb.toString());
bw.newLine();
}
bw.flush();
br.close();
bw.close();

}
public static void main(String[] args){
TestAlter test = new TestAlter();
try {
test.alterData();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}