Live2D
复制代码

05-随机数

随机数

package p随机数;

import java.util.Random;

public class RandomTest {
	
	public static void main(String[] args) {
		//创建随机数对象
		Random random = new Random();
		
		//随机产生一个int取值范围内的随机数
		System.out.println(random.nextInt());
		
		//随机产生一个boolean范围内的随机真假
		System.out.println(random.nextBoolean());
		
		//产生[0~100]的随机数。不能产生101
		//nextInt(101)翻译为:下一个int类型的数据是101,表示只能取到101
		System.out.println(random.nextInt(101));
		
		
		//随机产生五个随机数放入数组中,要求五个随机数不重复
		/*
		 * 方法1
		 * 该方法是先生成一个随机数无论是0还是其他值都能放进数组中,
		 * 然后再用该值与非自己下标的数组元素比较,所以无论是否将数组的所有元素都变成-1,都不会陷入死循环
		 */
		int[] arr = new int[5];
		//做一个循环,使数组中的默认值不为0
		for (int i = 0; i < arr.length; i++) {
				arr[i] = -1;	
		}
		
		for (int i = 0; i < arr.length; i++) {
			int number = random.nextInt(5); 
			System.out.println("生成的随机数:"+number);
				arr[i] = number;
				for (int j = 0; j < arr.length; j++) {
					if (i==j) {
						continue;
					}
					if (arr[j]==number) {
						i--;
						break;
					};
					
				}
				
			}
		//遍历数组
		for (int i = 0; i < arr.length; i++) {
			int j = arr[i];
			System.out.print(j+" ");
		}
		System.out.println();
		
		/*
		 *  方法2
		 *  由于该方法是先判断随机数是否在数组中,否的时候再把数传进数组
		 *  如果不把初始化数组中的所有0值换成不在[0-4]范围内,在数组前四个元素都填入值后,最后一个数组元素为0
		 *  随机数只能生成0,而数组最后一个又为0,陷入判断的死循环
		 */
		int[] arr1 = new int[5];
		//使数组中的值不是0
		for (int i = 0; i < arr1.length; i++) {
				arr1[i] = -1;	
		}
		
		int index = 0;
		while (index<arr1.length) {
			
			int num = random.nextInt(5);
			
			if (!contains(arr1,num)) {
				
				arr1[index++] = num;
				
			}
			
		}//编写一个返回值为boolean类型判断数组中是否包含num的方法
		//遍历数组
		for (int i = 0; i < arr1.length; i++) {
			int j = arr1[i];
			System.out.print(j+" ");
		}
			
	}
	public static boolean contains(int[] arr,int key) {
		
		for (int i = 0; i < arr.length; i++) {
			if (arr[i] == key) {
				//条件成立表示包含
				return true;
			}
			
		}
		//这个表示不包含
		return false;
	}
	
}

posted @ 2021-07-23 18:07  Milen-jie  阅读(84)  评论(0)    收藏  举报