mathrandomjava
‘壹’ java—利用Math.random随机产生字母的问题
‘a’不是字符串哦,“a”这个才是字符串!
呵呵
char
c
=
(char)(Math.random()
*
26
+
'a');
这里面其实进行了一次系统默认的数据类型转换和一个强制类型数据类型转换
默认的数据类型转换也称为
隐式的数据类型转换
当然了
强制。。
称为
显式
首先
Math.random()
*
26
+
'a'
这里面就进行了
隐式转换
Math.random()
*
26
的结果
是0-26的double
那么就是一个double+char
的表达式
这个时候根据规则会从小数据类型默认的转换为大数据类型
然后进行计算
也就是说
0-26的一个double
+
97.000000
那么它的结果当然也是一个double型
最后强制的将这个double型转为char型
总结:
小-大
隐式
大-小
显式
另外
显式的转换会丢失数据!
比如
double
d=4.9;
int
i
=(int)d;
到这里
你认识
i是多少?
想一下!
是4!
呵呵
字母对应以外的数字就会得到字母以外的字符
比如32
应该就是回车了
37
38
39
40
对应的←
↑
→
↓了
不过255以上得到的字符应该得到个垃圾值
因为char只能存放0-255的数据
‘贰’ java中Math类中有没有random方法
Java中Math类中有random方法,这个方法产生的随机数是一个伪随机选择的(大致)均匀分布在从0.0到1.0这一范围内的double类型数
调用格式:
doublea=Math.random();//产生一个随机数给a
intb=(int)(1+Math.random()*(10-1+1));//产生一个1-10的数给b
另外,还可以使用Random类来完成生产随机数的功能,
1、java.util.Random类中实现的随机算法是伪随机,也就是有规则的随机,所谓有规则的就是在给定种(seed)的区间内随机生成数字;
2、同种子数的Random对象,相同次数生成的随机数字是完全相同的;
3、Random类中各方法生成的随机数字都是均匀分布的,也就是说区间内部的数字生成的几率均等;
示例代码:产生两个范围在(10-300)的随机数
importjava.util.Random;//导入Random包
publicclassRanadd{
publicstaticvoidmain(String[]args){
intx,y;//定义两变量
Randomne=newRandom();//实例化一个random的对象ne
x=ne.nextInt(300-10+1)+10;//为两变量赋随机值
y=ne.nextInt(300-10+1)+10;
System.out.println(x+"+"+y+"="+(x+y));//输出
}
}