实际上各个编程语言里面都会存在有随机数的处理支持,利用随机数可以方便的生成一些临时的内容,在现实的生活之中比较常见的应用就在于:验证码,在Java里面如果要想实现随机数的操作,就可以通过java.util.Random类进行操作。
这个类一般在使用的时候往往都会通过无参的构造方法进行对象的实例化,随后调用如下的方法生成随机整数:
public int nextInt(int bound)
本方法之中的边界值实际上生成随机数的最大值,取值的范围:0~边界值-1
范例:生成随机数
import java.util.Random;
public class Test {
public static void main(String[] args) {
Random random = new Random();
for (int i = 0; i < 10; i++) {
System.out.println(random.nextInt(100));
}
}
}
输出:
38
84
78
38
82
8
89
12
25
40
此时利用Random实现了随机数的生成操作,这样一来每一次的操作都是不同的。
在现实生活中有一种“骗傻子钱”的模式,就是所谓的彩票业务。那么在彩票业务里面,有一种随机的运气,例如:早期的彩票称为36选7,就可以通过随机数的方式来生成,而生成的数据之中肯定不能包含有0,同时不能包含有重复的号码。
考虑到面向对象的设计结构,最佳的做法是要有一个彩票的工具类,这个工具类,可以自动的生成一组彩票的信息。
范例:
import java.util.Arrays;
import java.util.Random;
class LotteryTicket { //彩票的工具类
private int index; // 因为随机数字生成的时候会存在0,或者会存在有重复的数据,那么数组的索引必须单独控制
private Random rand = new Random();
private int[] data; //保存最终生成的彩票数据
public LotteryTicket() {
this.data = new int[7]; //动态初始化
}
public void random() { //随机生成彩票数据
index = 0;
while (this.index < this.data.length) {
int code = this.rand.nextInt(37); //1-36为生成范围
if (isExists(code)) {
this.data[this.index++] = code;
}
}
}
public int [] getData(){
Arrays.sort(this.data); //进行数组排序
return this.data;
}
private boolean isExists(int code) {
if (code == 0) { //不判断0
return false;
}
for (int temp : data) {
if (temp == code) {
return false;
}
}
return true;
}
}
public class Test {
public static void main(String[] args) {
LotteryTicket lotteryTicket = new LotteryTicket();
lotteryTicket.random();
for (int temp : lotteryTicket.getData()) {
System.out.println(temp);
}
}
}
输出:
4
5
6
7
11
20
25
这样就可以通过随机数解决数据的生成问题。
网友评论