일단 해보는 코딩/Java

[Java] 자바 난수(random) 함수 및 seed 설명

eun_zoey2 2022. 7. 22. 15:03
728x90
난수(random) 발생
임의의 수를 발생시키는 매서드 Random( )을 사용한다.
import java.util.Random 클래스 패키지가 필요하다.

(숫자 입력) int rand = new Random( ).nextInt( );  /  Math.random( );

 

System.currentTimeMillis ( )
 "현재 시간"을 사용해 난수가 계속 바뀐다.

    random 한 숫자를 추출하기 위해서는 늘 변하는 값이 있어야한다.(seed)

    컴퓨터는 내장된 pseudo(system random number) number를 가지고 있다가 랜덤한 숫자가 연산 등에서 필요하면 추출한다.

F11을 누르면 값이 실시간으로 변함

package Java05;

import java.util.Random;

public class Test05 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Random random = new Random();
		random.setSeed(System.currentTimeMillis());	
		// 지속적으로 바뀌는 "현재 시간"을 사용해 난수가 계속 바뀐다.
		System.out.println("랜덤한 n개 미만의 정수 반환 : " + random.nextInt(46));
		System.out.println("랜덤한 Boolean : " + random.nextBoolean());
		System.out.println("랜덤한 Long값 실수 반환 : " + random.nextLong());
		System.out.println("랜덤한 Float값 실수 반환 : " + random.nextFloat());
		System.out.println("랜덤한 Double값 실수 반환 : " + random.nextDouble());
		System.out.println("랜덤한 정규분포 난수 반환 : " + random.nextGaussian());

	}
}

package Java05;

import java.util.Random;

public class Test07 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Random random = new Random();
		random.setSeed(System.currentTimeMillis());
		System.out.println("0~1 사이의 난수 1개 발생" + (Math.random()));
		System.out.println("0~10 사이의 난수 1개 발생" + (int)(Math.random()*10));
		System.out.println("0~100 사이의 난수 1개 발생" + (int)(Math.random()*100));
	}
}

package Java05;

import java.util.Random;
// 난수로 알파벳 대문자 출력
// ASCII code('A' = 65, 'Z' = 90)와 일반 A~Z 까지를 (('Z'-'A')+1)+'A';
public class Test09 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Random rand = new Random();
		rand.setSeed(System.currentTimeMillis());
		/* int random = rand.nextInt(8)+2;
		for (int i=1; i<=9; i++) {
		System.out.println(random + "*" + i + "=" + (random*i)); */
		
		int random1 = rand.nextInt((90 - 65) + 1) + 65;
		System.out.println("문자1 : " + (char)random1);	//문자로 추출
		
		int random2 = rand.nextInt(('Z'-'A') + 1) + 'A';
		System.out.println("문자2 : " + (char)random2);	//문자로 추출
		}
	}

'일단 해보는 코딩 > Java' 카테고리의 다른 글

[Java] 함수(메써드) 호출 방식  (0) 2022.07.26
[Java] Break/Continue 문  (0) 2022.07.25
[Java] 배열(Array)  (0) 2022.07.21
[Java] Switch ~ case 문, For문  (0) 2022.07.21
[Java] If문, else if~,  (0) 2022.07.21