2011-04-27 2 views
3

Java 프로그램을 20 번 테스트해야하며 테스트를 반복 할 수 있도록 임의의 시드를 설정해야합니다. 초기 시드를 0으로 설정 한 다음 각 실행 (예 : 1,2,3 등) 할 때마다 1 씩 증가 시키면 시드가 멀리 떨어져 있지 않더라도이 메서드는 완전한 임의성을 보장합니다.Java 임의의 시드

고맙습니다.

+0

또는 생성 된 난수가 서로 비슷하거나 유사할까요? – badcoder

+0

테스트를 실행할 때마다 똑같은 랜덤 시드가 있습니까? 왜 그것을 무작위로 부르는 것을 괴롭히는 지, 그것은 단지 씨앗 일뿐입니다. – Gressie

답변

1

왜 현재 시간을 시드로 사용하지 않습니까? 즉 System.currentTimeMillis()?

+0

테스트를 반복해야하기 때문에 – badcoder

+0

내 답을 다시 말해 보겠습니다. 동일한 난수 시퀀스로 20 번 테스트를 반복해야하는 경우 동일한 시드를 사용해야합니다. 그렇지 않으면 현재 시간을 시드로 사용할 수 있습니다. 아마도 귀하의 질문을 정확하게 이해하지 못하고 있습니까? – ryanprayogo

0

숫자 또는 문자열이 필요합니까? 문자열이 필요할 때 UUID.randomUUID().toString()을 사용하여 테스트 할 때 UUID를 얻을 수 있지만 숫자가 필요한 경우 System.nanoTime()을 사용할 수 있습니다.

6

모든 시드는 Java에 포함 된 것과 같은 표준 PRNG에 대해 다른 시드와 동일한 수준의 임의성을 제공합니다. 따라서 테스트에 대해 증가하는 시드를 사용하는 것이 좋습니다.

더 나은 난수 생성기를 사용하는 것이 좋습니다. 값을 이미지로 렌더링하면 Java에 포함 된 패턴이 눈에 띄는 반복 패턴을 만듭니다 (참조를 찾을 수는 없지만 분명합니다). 나는 Mersenne Twister (Java versions)을 대안으로 사용하고 패턴을 쉽게 볼 수 없도록 매우 긴 기간을 권장합니다.

+0

고마워, 그게 정확히 내가 알아야 할게 뭐야! – badcoder

+0

문제 없습니다. 나는 당신이 그것에 대해 걱정한다면 더 나은 임의성을 얻는 방법에 대한 대답을 업데이트했다. 어느 쪽이든 당신은 당신의 테스트에 대해 증가하는 씨앗을 사용할 수 있습니다. 또는 고정 시드에서 생성 된 일련의 난수를 사용하여 각 반복의 시드로 사용할 수도 있습니다. – WhiteFang34

+1

http://www.alife.co.uk/ nonrandom/- 그건 애플릿이다 – Rekin

2

0의 시드를 사용하면 임의의 숫자 시퀀스가 ​​해당 지점에서 반복 가능합니다. 다른 시퀀스를 원하면 다른 랜덤 시드를 사용해야합니다. 즉, 테스트 당 한 번 시드를 설정할 수 있어야합니다.

관련 문제