마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

[JAVA] 랜덤함수 질문

0 추천

안녕하세요 안드로이드 스튜디오 공부한지 3달쯤 되는 학부생입니다.

랜덤함수를 사용해서 int 배열을 얻는 함수를 구현했습니다.

그러나 이를 연달아서 반복해서 사용할 경우 똑같은 값이 계속 나옵니다.

(연달아서 사용하지 않는 경우에는 다른 값이 나옵니다)

 

public class RandomValManager {
    static Random rand = new Random();
    static long seed = System.currentTimeMillis();

    static {
        rand.setSeed(seed);
    }

    static int temp[] = new int[NUM_OF_VAL_MAX];
    public static int getRandomInt(int bound) {
        return (int)rand.nextInt(bound);
    }

    public static int[] getRandomIntArray() {
        for(int i = 0; i < NUM_OF_VAL_MAX; i++) {
            temp[i] = getRandomInt(VAL_MAX);
        }
        Log.d("currentSeed", "currentSeed : " + seed);
        return temp;
    }
    @NonNull
    public static String getRandomLocation(){
        String string = "";
        string += String.valueOf(getRandomInt(ROW_MAX - 1) + 1);
        string += String.valueOf(getRandomInt(ROW_MAX - 1) + 1);
        Log.d("randomLocation", "randomLocation"+ string);
        return string;
    }
}

 

tempRandomVal1 = RandomValManager.getRandomIntArray();
//tempRandomVal2 = RandomValManager.getRandomIntArray();
//tempRandomVal3 = RandomValManager.getRandomIntArray();
우주정복자현준 (150 포인트) 님이 2023년 7월 21일 질문

1개의 답변

0 추천
 
채택된 답변

실제 자바의 Random.nextInt() 는 유사랜덤 입니다.

컴퓨터이기에 진짜 주사위를 던진것 같은 효과를 기대하기는 힘듭니다.

SecureRadom 을 이용하거나...

    public static int getRandomInt(int bound) {
        rand.setSeeed(System.currentTimeMillis());
        return (int)rand.nextInt(bound);
    }

이렇게 한줄 추가해보세요

 

 

 

비애천사 (12,080 포인트) 님이 2023년 7월 24일 답변
우주정복자현준님이 2023년 7월 25일 채택됨
...