最近看到java.lang.Math类时,注意到random()方法,想想应该把java随机数类作为一个点来研究以下。
1、 随机数 & 伪随机数
在计算机上用数学方法产生某一分布的随机数,由于是依照某种算法产生的,就不可能是真正的随机数,因此常把数学方法产生的随机数称为伪随机数。只要伪随机数具有真正随机数的一些统计性质,就可以把伪随机数作为真正随机数来使用。
2.JAVA随机数类
2.1 Java中的Math类提供的random方法,该方法的返回带正号的 double 值,大于或等于 0.0,小于 1.0。返回值是一个伪随机(选择的数,在上述范围内(大致)均匀分布 .
2.2 Random类产生伪随机数。
nRandom对象产生以后,可以通过对象调用不同的函数:nextInt()、nextLong()、nextFloat()、nextDouble()等来获得不同类型的随机数。 大致均匀分布 , 特点随即种子选取比较好
3. 产生不可重复的随机数
3.1 现实情况中,有些情况是允许产生重复的随即数的:比如丢多个骰子、验证码生成。作了个简单模拟投2个骰子的程序,核心程序就2句:
Random rand = new Random();
int point = rand.nextInt(6)+1;
可以使用产生的随机数生成不同的骰子点数图片;
3.2 不可重复的随机数,比如福利彩票摇奖程序,摇出的球号前后肯定是不能重复的。
一种思路是,如35投7中,首先将剩余球信息存放在一个数组(对象或整型)中,随机在剩余球数中产生一个球位置索引,然后将该球信息作为摇出球的信息。
4. 应用
可以应用于以上的情况,还有诸如游戏类(牌类、拼图)等等。