在实际开发中生成随机数的使用时很普遍的,所以在程序中生成随机数的操作很重要,在Java中主要提供了两种方式生成随机数,分别为调用Math类的random方法和Random类提供的生成各种数据类型随机数的方法。
在Math类中存在一个random方法,用于生成随机数字,该方法默认生成大于等于0.01小于1.0的double型随机数,即0<=Math.random()<1.0,虽然Math.random方法只可以生成0~1之间的double型数字,但只要在Math.random语句上稍加处理,就可以使用这个方法生成任意范围的随机数。 我们来写一个猜数字的小游戏。 除了随机生成数字以外,使用Math类的random()方法还可以随机生成字符,例如,可以使用下面代码生成a~z之间的字符:
(char)('a'+Math.random()*('z'-'a'+1));通过上述表达式可以求出更多的随机字符,如A~Z之间的随机字符,进而推理出求任意两个字符之间的随机字符。 这里是将char类型的字符转换为相对应的int类型的数字。
(char)(char1+Math.random()*(char2-char1+1));这里可以将这个表达式设计为一个方法,参数设置为随机生成字符的上限与下限。我们来看一个例子。 Math.random()方法返回的值实际上是伪随机数,它通过复杂的运算而得到一些列的数,该方法是通过当前时间作为随机数生成器的参数,所以每次执行程序都会产生不同的随机数。
除了Math类中的random()方法可以获取随机数之外,Java中还提供了一种可以获取随机数的方式,那就是java.until.Random类,该类表示一个随机数生成器,可以通过实例化一个Random对象创建一个随机数生成器。
Random r = new Random();其中,r是指Random对象。 以这种方式实例化对象时,Java编译器以系统当前时间所谓随机数生成器的种子,因为每时每刻的时间不可能相同,所以生成的随机数将不同,但是如果运行速度太快,也会生成两次运行结果相同的随机数。同时也可以在实例化Random类对象时,设置随机数生成器的种子。
Random r = new Random(seedValue);r:Random类对象。 seedValue:随机数生成器的种子。 在Random类中提供了获取各种数据类型随机数的方法。 抢红包小例子。