A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 折纸时代 中级黑马   /  2012-11-11 20:25  /  2775 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 司懿卓 于 2012-11-13 12:03 编辑

得到随机码一个小程序
//生成一个97~122之间的int类型整数
int intA = (int)(Math.random(); * 26 + 97);

伪随机方法 是random(); 但是为什么后面要* 26 +97 ??  

===============================
random(); 是伪随机0~1之间的浮点数.
所以,random();* 26 就相当于 (0.0~1.0) * 26 ,区间变成了(0.0~26.0)
加97相当于把区间增加97 ,成为(97.0~123.0) //不包含123
但是因为是要的int类型整数,所以 是小于123.0的,那取整后就是122了...

97~122在ASCII表相对应a~z 26个英文字母..

点评

Math调用random();方法产生一个0.0~1.0之间的随机数;自己看好算术运算符有优先等级的 。  发表于 2012-11-12 15:43

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 这个是你刚编辑的

查看全部评分

5 个回复

正序浏览
Math.random()得到的是0-1之间的,取区间两边的*26+97所得到最终的结果肯定是97-122之间的了。
回复 使用道具 举报
本帖最后由 司懿卓 于 2012-11-12 21:25 编辑

是不是相当于区间的最左和最右乘以26,区间就变成了(0.0*26~1.0*26) 就是0.0~26了..

然后区间值加上97,就是97~123了,  但是因为是97~123(不包含123)之间的整数,所以就知道122...

不知道这样说对不???  
26是26个英文字母..  97~122是英文字母在码表相对的值..

谢谢大家啦...  ^ ^
回复 使用道具 举报
java 控制随机数产生在一定的范围内,其中Math.random()就是产生[0.0,1.0)之间的浮点数,(int)(Math.random())值永远为0,因为0乘上任何数都会是0,所以要在后面*26,它的范围就变成了[0.0,26.0),再加上97就得到了97~122之间的整数。后面* 26 +97 就是为了改变取值的区间。
回复 使用道具 举报
Math.random()方法的返回值是一个0.0到1.0之间的double数值。
后面*26就能让变化范围是0.0~26.0,后面加97就能让变化范围是97~122.
生产随机数建议使用java.util包下的Random类,实现起来会更简单一些。

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

回复 使用道具 举报
其实吧,random()方法说是生成的随机数,但是其内部实现的时候也是根据一定的算法得到的,也就是说也是有一定的规律可循的,不是真正的随机数,所以叫伪随机数,但是它的值分布在0~1之间,但是不包括1。所以生成一个97~122之间的int类型整数,你那上面的方法太麻烦了,其实是有一个公式的  哥们,要是想获得[a,b](注意是闭区间)之间的随机数,可以(a-b)*Math.random()+b;你可以自己试试哈!

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马