在数据分析分过程中经常会用到一些各种需求的数据,例如几十G大小的【手机号码】+【姓名】+【时间】的源数据,一般情况下的这种数据在开发阶段是拿不到的,只能自己手动生成,这里提供一个简单的思路。
package com.phonenum;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Random;
public class info
{
//生成随机手机号
public String randompnum() throws IOException
{
String[] num="13,15,17,18,19".split(",");//手机号的前俩位
Random r=new Random();
String pnum=num[r.nextInt(5)]+(int)((Math.random()+1)*100000000);
return pnum;
}
//生成随机日期
public String randomdata()
{
Random r=new Random();
String[] yearmp="01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19".split(",");
String year="20"+yearmp[r.nextInt(19)]+"-";//生成随机年份
String[] month="01,02,03,04,05,06,07,08,09,10,11,12".split(",");
int day=r.nextInt(32);
String data=year+month[r.nextInt(12)]+"-"+day;
return data;
}
//随机生成姓名
public String randomname()
{
Random r=new Random();
//常见姓氏
String[] namemp="赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜戚谢邹喻柏水窦章云苏潘葛奚范彭郎鲁韦昌马苗凤花方俞任袁柳酆鲍史唐费廉岑薛雷贺倪汤".split("");
//姓氏
String nametp= namemp[r.nextInt(72)];
//名字,从常用汉字中取,一般汉字的范围大概在4e00-9fa5
char nametm1=( (char)(0x4e00+(int)(Math.random()*(0x9fa5-0x4e00+1))));
char nametm2=( (char)(0x4e00+(int)(Math.random()*(0x9fa5-0x4e00+1))));
int a=(int)(Math.random()*2);
String name=null;
if(a==0)//名字是三个字
{
name=nametp+nametm1;
}
else//名字是四个字
{
name=nametp+nametm1+nametm2;
}
return name;
}
public static void main(String[] args) throws IOException
{
File file=new File("G:/pnum.txt");
if(!file.exists())//文件不存就创建一个
{
file.createNewFile();
}
else//存在的话就先删除再创建
{
file.delete();
file.createNewFile();
}
BufferedWriter bw=new BufferedWriter(new FileWriter(file));
info in=new info();
for(int i=0;i<50001;i++)
{
bw.write(in.randompnum()+"\t"+in.randomname()+"\t"+in.randomdata());
bw.newLine();
//System.out.println(num[r.nextInt(5)]+(int)((Math.random()+1)*100000000));
}
bw.close();
}
}
(代码拙劣仅供参考)
注:以上代码均来自实际编写,如有问题请留言,转载请注明出处。