Java随机数

来源:互联网 发布:赵本山支持女儿玩网络 编辑:程序博客网 时间:2024/05/23 01:23

公司产生6位随机短信验证码的功能   产生了 5.0835这样的不科学验证码




打开代码 发现是这样写的

private String randomCode() {
return Double.toString(Math.random()).replace("0.", "").substring(0, 6);
}

乍一看  好像没什么问题

测试一下 问题真的蛮多的     Math.random产生 [0.0,1.0) 的数字

当产生的小数足够小时   产生出来的数就直接是   3.290305281000716E-4    逻辑不适用了 出错了


修改策略也很简单

生成6位随机数
System.out.println((int)((Math.random()*9+1)*100000));  
生成5位随机数:
System.out.println((int)((Math.random()*9+1)*10000));  
生成4位随机数
System.out.println((int)((Math.random()*9+1)*1000));  


原创粉丝点击