java random 重复_java之for循环生成随机数,多次数据均为重复

一:出现问题的代码

//生成手机号码个数

int phonedata=${__Random(1,500,)};

StringBuffer phonedatalist = new StringBuffer();

for (int i=0;i

生成手机号码后8位

phonedata1=${__time(/1000000,)};

String phonedata12=String.valueOf(phonedata1);

//随机选取手机前三位

int phonedata=${__Random(0,27,)};

String[] phonelist = {"198","166","199","170","170","171","176","175","145","149","173","172","170","170","131","130","188","187","183","182","159","157","152","151","150","147","139","138"};

String phonedata2=phonelist[phonedata];

//随机选取手机第四位

int phonedata31=${__Random(0,9,)};

String phonedata311=String.valueOf(phonedata31);

//拼装成手机号码

String phone=phonedata2+phonedata311+phonedata12;

phonedatalist.append(phone).append(",");

}

二:修改之后的代码

//生成手机号码个数

int phonedata=${__Random(1,500,)};

StringBuffer phonedatalist = new StringBuffer();

Random rand = new Random();

for (int i=0;i

//生成手机号码后8位

phonedata1=rand.nextInt(9999999) + 1000000;

String phonedata12=String.valueOf(phonedata1);

//随机选取手机前三位

int phonedata=rand.nextInt(27) + 0;

String[] phonelist = {"198","166","199","170","170","171","176","175","145","149","173","172","170","170","131","130","188","187","183","182","159","157","152","151","150","147","139","138"};

String phonedata2=phonelist[phonedata];

//随机选取手机第四位

int phonedata31=rand.nextInt(9) + 0;

String phonedata311=String.valueOf(phonedata31);

//拼装成手机号码

String phone=phonedata2+phonedata311+phonedata12;

phonedatalist.append(phone).append(",");

}

三:问题原因

1、问题还是出在随机函数定义位置上,函数定义不能放在for循环里面,而是应该在for循环外面定义好。

引用其他地方学到东西:首先就是要知道伪随机数Random的算法原理,其原理简单来说:一个种子 ---〉经过一定的算法 --〉产生一个结果(同时更改种子本身)那么.Next的时候 新的种子 ---〉经过一定的算法 --〉产生另一个结果(同时再产生一个种子)通过这样得到随机的效果,也就是说如果初始种子一样,那么后面得到的结果和顺序基本上就是一样的,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值