首先要说的是:很多人分不清临界值是否取得到!
第一种办法,Math.random()
他的范围是0.0与1.0之间的伪随机数字,包括0不包括1(什么是伪随机?在本文章最下面有简单的介绍)。
在这里我举个例子:生成一个[1,100]之间的随机数字。
number = (int)(Math.random()*100)+1
Math.random生成的是一个[0.0,1.0)之间的小数0.xxxxxx... 先将小数点向后移动2位,然后强制转换成int型,只保留整数位的值,这时候值的范围是[0,99],两个边界同时扩大一个单位的值+1,范围就变成了[1,100]。
但是...
我现在改变要求我需要一个范围为[0,100]的随机数,用简单的话来说就是包括0包括100
这时候就会发现使用第一种方法很难凑成既包括0又包括100的范围
这时候我们来引入:
第二种办法
//这里需要添加Random类
import java.util.Random;
//创建一个对象
Random df = new Random();
//引用nextInt()方法
int number = df.nextInt(101);
nextInt(int bound)返回伪随机的
均匀分布int值介于0(含)和 bound(不包括),参数bound 是上限。
这里的df.nextInt(101)的范围是[0,100] ,刚好满足我们的需求。
ps:
伪随机数是用确定性的算法计算出来自[0,1]均匀分布的随机数序列。并不真正的随机,但具有类似于随机数的统计特征,如均匀性、独立性等。在计算伪随机数时,若使用的初值(种子)不变,那么伪随机数的数序也不变。伪随机数可以用计算机大量生成,在模拟研究中为了提高模拟效率,一般采用伪随机数代替真正的随机数。模拟中使用的一般是循环周期极长并能通过随机数检验的伪随机数,以保证计算结果的随机性。
参考地址:https://baike.baidu.com/item/伪随机数/104358?fr=aladdin