random.nextint

▼魔方 西西 提交于 2019-11-29 09:44:01

Random的nextInt()用法

一、先看这样一个有趣的题目:

1、设计一个密码的自动生成器:密码由大写字母/小写字母/数字组成,生成六位随机密码。

2、分别以1、2、3作为种子数创建Random对象,生成六位随机密码进行测试。

问题答案核心代码如下:

package www.wityx.com;

import java.util.Random;
import java.util.Scanner;
public class RandomTest {

public static void main(String[] args) {

	// 定义一个字符型数组用来存放密码数据随机取值的内容
	
	char[] pardStore = new char[62];
	
	// 把所有的大写字母放进去 
	
    char beg = 'A';
    
	for(int i=0;i<=25;i++)
	
    {
    
    	pardStore[i]=beg;
    	
        beg=(char)(beg+1);//因为相加所以数据类型会自动转换为int型,所以要强制转换为char型不然不匹配
        
    }
    
    // 把所有的小写字母放进去
    
    char beg1 = 'a';
    
    for(int i=26;i<=51;i++)
    
    {
    
    	pardStore[i]=beg1;
    	
        beg1=(char)(beg1+1);
        
    }
    
    // 把0到9放进去
    
    char beg2 = '0';
    
    for(int i=52;i<=61;i++)
    
    {
    
    	pardStore[i]=beg2;
    	
        beg2=(char)(beg2+1);
        
    }
    
	// 分别以1、2、3作为种子数 生成6位随机密码
	
	Scanner sc = new Scanner(System.in);
	
	int seed = sc.nextInt();//到时候seed等同于输入的数字1,2,3作为种子数
	
	Random  random = new Random(seed);
	
    for(int i=1 ; i<=6;i++)
    
    {
    	int n =random.nextInt(62);//随机生成一个整数,这个整数的范围就是[0,62)
        System.out.print(pardStore[n]);
    }
    
}

}

二、nextInt()用法总结和思考

1、nextInt()用法:

会随机生成一个整数,这个整数的范围就是int类型的范围-2^31 ~ 2^31-1,但是如果在nextInt()括号中加入一个整数a那么,这个随机生成的随机数范围就变成[0,a)。

2、在题目给定数组时如何运用nextInt():

上面提出的有趣题目是给定我们一个数组并且用来存放密码的组成元素,在这种给定我们已知的密码组成范围以及用数组来包括并且非同一组成的连续数据时,我们可以借鉴上面的问题答案代码

for(int i=1 ; i<=6;i++)//六位数密码所以循环输出六次

{

int n =random.nextInt(62);//随机生成一个整数,这个整数的范围就是[0,62)

System.out.print(pardStore[n]);//每次生成的整数n用pardStore[n]来代表一个数组中的数据

}

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!