生成指定范围内的随机数html
import java.util.Random; public class Test { public static void main(String[] args){ Random rand = new Random(); for(int i=0; i<10; i++) { System.out.println(rand.nextInt(100) + 1); } } }
编译运行,输出结果为:
81
64
31
86
56
14
45
57
28
90
屡次运行,结果每次都不一样,但取值必定会在 1 和 100 之间,可能出现 1 和 100。
同理,很容易知道若是要得到随机两位整数,代码写成:
rand.nextInt(90) + 10;
你必定很惊讶,为何是这么写出来的。其实,在 nextInt() 方法中做为参数的数字 90 表示:你但愿生成的随机数的全部取值的可能性的数量(在本命题中,两位整数取值为 [10, 99],共90个数);加好后面的数字 10 ,表示区间的最小取值。
你能够验证下,按照这样理解,[1, 100] 的随机数,是否是应该写成 rand.nextInt(100) + 1 。千万不要把参数 100 理解为最大取值。只是区间 [1, 100] 正好从 1 开始,因此最大取值和取值可能性数量正好同为 100。
所以,
生成随机三位数的代码为:
rand.nextInt(900) + 100;
生成区间 [64, 128] 中随机值的代码为:
rand.nextInt(65) + 64;
取值可能性的数量是如何计算出来的呢?固然是 最大取值-最小取值+1 ,因此,有最终公式以下:
// For Java
java
// randNumber 将被赋值为一个 MIN 和 MAX 范围内的随机数
int randNumber = rand.nextInt(MAX - MIN + 1) + MIN;
在微软平台下,因为 .Net Framework 提供了相应的方法来生成固定区间的整数,因此公式为:程序员
// randNumber 将被赋值为一个 MIN 和 MAX 范围内的随机数
int randNumber = rand.Next(MIN, MAX + 1);