版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37283570/article/details/78468138
package chapter6;
import java.util.Random;
/**
* @author: 努力努力丶
* @date:2017年11月7日 下午2:36:42
*
*/
public class RandomTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Random random=new Random();
//产生[1~100]的随机数
int r=random.nextInt(100-1+1)+1;
System.out.println(r);
//产生‘a’~‘z’的随机字符
char c=(char) (random.nextInt(26)+'a');
System.out.println(c);
}
}
对于产生特定区间数:
多次运行,结果每次都不同,但取值一定会在 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
// randNumber 将被赋值为一个 MIN 和 MAX 范围内的随机数
int randNumber = rand.nextInt(MAX - MIN + 1) + MIN;
在微软平台下,由于 .Net Framework 提供了相应的方法来生成固定区间的整数,所以公式为:
// For C#
// randNumber 将被赋值为一个 MIN 和 MAX 范围内的随机数
int randNumber = rand.Next(MIN, MAX + 1);