Java에서이 작업을 수행 할 수 있습니까? 주어진 범위에 예를 들면 다음과 같이 난수를 생성하고 싶습니다 : 1에서 70 사이 - 난수가 생성 될 때마다 생성 결과에서 제외되어야합니다.
그래서 [1,70]는 랜드 (56) = (현재 56 간주해서는 안 다음번)
는 [1,70]는 = 63생성 된 숫자의 난수 생성 및 제외
답변
(56,63 지금까지 내 코드 생성으로부터 배제되어야 실행) 이것은 [1..70]이 포함 된 숫자 배열을 뒤섞어 한 번에 하나씩 처리하는 것과 같습니다. Google에서 '셔플 알고리즘'을 찾습니다. 여기
또는 JDK와 함께 제공되는 셔플 알고리즘을 사용하는 것이 좋습니다. http://adload.oracle.com/javase/6/docs/api/java/util/Collections.html#shuffle(java.util.List) –
네, 거기에 있었음을 잊었습니다. –
http://www.vogella.de/articles/JavaAlgorithmsShuffle/article.html 내가 여기 같은 질문을 링크는 다음과 같습니다 How can I generate a random number within a range but exclude some?
일반적인 전략은 70 개 값으로 배열을 작성 같은 것입니다. 위 링크에서 임의로 생성 한 값을 제거하면됩니다.
범위를 배열에 채우고 배열을 셔플 할 수 있습니다. 매우 큰 범위의 경우 이것은 비효율적 일 것입니다.
또 다른 간단한 방법으로, HashMaps를 사용하여 난수를 추적합니다. 그것은 일종의 빠르고 더러운입니다.
HashMap<Integer,Integer> hmRandomNum = new HashMap<Integer,Integer>();
Integer a = < generate random number>
if(hmRandomNum.get(a) == null)
{
hmRandomNum.put(a,a);
}
else
{
// ignore this random number. this was already selected and present in the hashmap.
}
//Iterate depending on how many numbers you want.
- 1. 난수 생성
- 2. 난수 생성
- 3. C#의 난수 생성
- 4. 확률 분포로 난수 생성
- 5. ARM7의 난수 생성 - C
- 6. 자바에서 난수 생성
- 7. 범위를 제외한 난수 생성
- 8. 비 균일 난수 생성
- 9. 난수 생성 방법
- 10. N 자리의 난수 생성
- 11. doSMP로 난수 생성
- 12. 분포에 따라 난수 생성
- 13. Spartan-3E에서 난수 생성
- 14. CakePHP에서 난수 생성?
- 15. Haskell QuickCheck Unique 난수 생성
- 16. 난수 생성 및 HTML 인수 문자열에 추가
- 17. MVC 응용 프로그램에서 난수 생성
- 18. 파이썬에서 n 차원 난수 생성
- 19. C#/XNA 의사 난수 생성
- 20. 균일하지 않은 밀도의 난수 생성
- 21. C++에서 벡터를 사용하여 난수 생성
- 22. C++ : main() 외부에서 시드 생성 난수 생성기
- 23. PHP에서 10,000 개의 반복되지 않는 난수 생성
- 24. PHP에서 빠른 의사 난수 데이터 생성
- 25. 두 숫자 사이에 고유 한 난수 생성
- 26. C++에서 Well44497a를 사용하는 난수 생성
- 27. Inbuilt 함수를 사용하지 않고 .NET에서 난수 생성
- 28. 비트 연산을 사용하지 않는 난수 생성
- 29. Java에서 수백만 개의 반복되지 않는 난수 생성
- 30. VisualStateManager 및 생성 된 전환
질문에 중복 : ** (http://stackoverflow.com/questions/4040001/java-creating-random-numbers-with-no-duplicates) [자바 중복 불가능하여 난수를 생성하기] ** – lschin