Math.random()
을 사용하여 2로 증가하는 난수를 어떻게 생성합니까? 예를 들어, (2,4,6,8)
세트에서 임의의 숫자를 생성하려고합니다. 어떻게할까요?자바에서 임의의 숫자를 생성하는 방법
답변
이 특정 세트의 경우에는 여기
(int)(Math.random() * 4) * 2 + 2
사용할 수 :
Math.random()
가 0.0보다 크거나 같고 1.0보다 엄격 이하의 수를 생성하고,(int)(... * 4)
는 3... * 2 + 2
은 2 일, 4, 6, 8
당신은 그 세트가 * 항상 * 특정 산수 시리즈라고 가정하고 있습니다. – hexafraction
@hexafraction : 그렇습니다. OP가이 특정 세트가 아닌 다른 것 이후에 있다는 질문에 아무런 표시가 없습니다. – NPE
@hexafraction * "두 자리 위로 올라가는 숫자"* – arshajii
int[] numSet={2,4,6,8};
Random myRand=new Random();
int myNum=numSet[myRand.nextInt(numSet.length)];
이 번호 배열을 생성
제공, 0 일, 1, 2, 임의 오브젝트를 준다 그런 다음 숫자 배열에서 임의의 요소를 선택합니다. 이것은 숫자가 어떤 종류의 수학적 계열에 있다고 가정하지 않습니다. 그것들은 11, 25, 31, 876, 984368, 7432, 84562 일 수 있습니다.
y 값에서 해당 세트를 생성하는 다항식이 있음을 말하지 마십시오. 알아.
세트가 100 만 가지가되면 어떻게 될까요? 모든 숫자를 불필요하게 배열에 저장해야합니다. – arshajii
@arshajii 현재의 원래 질문의 애매 성을 감안할 때, OP의 매개 변수를 모르기 때문에 모든 대답이 부분적으로 정확하고 부분적으로 작동하지 않을 수 있습니다. AFAICT에서 5 분짜리 창 수정이 있었지만 너무 확신 할 수는 없습니다. – hexafraction
여기에 약간의 위험이 있습니다. 누군가이 코드를 그대로 복사하고 각각의 새로운 선택에 대해 새로운 Random() 객체를 만드는 것은 동일한 Random 객체의 연속 값보다 훨씬 덜 "임의"입니다. 그래도 코더가 해당 객체를 한 번만 생성하고 다중 호출 또는 반복에 대해 재사용 할 때는 스레드 안전성이 높기 때문에주의해야합니다. –
해당 숫자를 배열에 넣습니다. 배열의 길이 - 1을 사용하여 난수를 생성하고 인덱스로 사용하여 배열 요소를 임의로 선택합니다.
또한이 같은 java.util.Random의 클래스를 사용할 수 있습니다 :
이int values[] = {2,4,6,8};
Random randomGenerator = new Random();
int randomInt = randomGenerator.nextInt(values.length);
int randomValue = values[randomInt]; /* Here's your random value from your set */
좋아, 실제 일반적인 솔루션을 만들 수 있습니다.
int lower = 2;
int upper = 8;
int step = 2;
int rand = (int)(Math.random() * (upper-lower+1));
int result = rand - rand%step + lower;
지정한 세트와 다른 세트에서 숫자를 생성하려면 하단 변수, 상단 및 스텝 변수를 설정에 맞게 변경하십시오. 상한이 세트에 있으면 포함합니다.
그 표현에서 (위 아래 -2) 주위에 괄호가 필요합니다. 또한 (rand - % 2)을 (rand & -2)를 사용하여 나눗셈없이 할 수 있습니다. 사업부를 떠나고 싶다면 일반적인 차이점을 지정하는 (단계) 값과 함께 산술 진행을 (위쪽), (아래쪽)으로 설명 할 수있는 좀 더 일반적인 솔루션을 얻을 수 있습니다. –
감사합니다. 그에 맞게 수정하십시오. – spydon
upvote에 적합합니다. :) 나는 또한 당신이 1의 단계를 허용하기 위해 (upper-lower + 2)를 (upper-lower + 1)으로 올바르게 바꿨음을 주목한다. –
더 일반적인 대답을 추가하고 싶습니다.
집합에서 가장 작은 정수가 있고 세트의 크기가 같은 것 세트에서 임의의 정수 S.라고 가정 : 자바에서 특정 예를 들어
A + myRandom.nextInt(S) * 2
, 그것은 것 :
Random myRandom = new Random();
int randomNum = 2 + myRandom.nextInt(4) * 2;
(거의) 완전히 일반적인 접근 방식은 그리 어렵지 않습니다. 및 순서의 일부가 아닌 stop
stop
경우 이전 stop
, 또는 마지막 번호를 포함하여 최대 {start, start+step, start+2*step, ... }
에서 임의의 정수를 반환
static randInt(int first, int last, int step) {
int nsteps = (last+1-first)/step;
return first + step*(int)(nsteps*Math.random());
}
.
int choice = randInt(2, 8, 2); /* random choice from {2, 4, 6, 8} */
... 샘플 질문이 해결되었습니다.
(거의) 부분이, 당신은 의미하지 않는다 (step
는, step<0
first<last
, 또는 그 반대의 경우도 마찬가지 제로이다.) 그래서
- 1. 자바에서 임의의 정수에 교회 숫자를 생성하는 코드
- 2. 자바에서 임의의 이중 숫자를 생성하는 가장 빠른 방법
- 3. 자바에서 0과 2 사이의 임의의 숫자를 생성하는 방법^32-1
- 4. 동일하지 않은 임의의 숫자를 생성하는 방법
- 5. 범위 내에서 임의의 숫자를 생성하는 방법
- 6. 자바에서 2 차원 배열로 임의의 숫자를 전달
- 7. 문자열을 기반으로 임의의 숫자를 생성하는 방법은 무엇입니까?
- 8. PHP로 임의의 숫자를 생성하는 방법은 무엇입니까?
- 9. 이 코드에서 임의의 숫자를 생성하는 위치는 어디입니까?
- 10. 배열에 임의의 숫자를 추가하는 방법
- 11. 충돌없이 asp.net에서 임의의 고유 16 자리 숫자를 생성하는 방법
- 12. C#에서 클래스의 생성자에서 임의의 숫자를 생성하는 방법
- 13. 파이썬에서 1,000,000 개 이상의 임의의 숫자를 생성하는 가장 빠른 방법
- 14. C++ 1에서 10 사이의 임의의 숫자를 생성하는 방법^6?
- 15. 다음 임의의 숫자를 아는 방법?
- 16. Math.round(), 임의의 숫자를 사용하는 방법?
- 17. 버튼으로 임의의 6 자리 숫자를 생성하는 방법은 무엇입니까?
- 18. 찾기 및 sed와 함께 임의의 숫자를 생성하는 방법은 무엇입니까?
- 19. 임의의 모양을 파이썬에서 임의의 좌표를 생성하는 방법
- 20. 생성하는 임의의 정수
- 21. 범위 내에서 임의의 숫자를 만드시겠습니까?
- 22. 반복없이 파이썬에서 임의의 숫자 범위를 생성하는 방법
- 23. xquery에서 임의의 UUID를 생성하는 방법
- 24. 범위에서 임의의 정수를 생성하는 방법
- 25. Ruby에서 임의의 이름을 생성하는 방법
- 26. iPhone에서 임의의 숫자를 생성하려면 어떻게해야합니까?
- 27. 텍스트 뷰에서 1에서 100 사이의 임의의 숫자를 생성하는 버튼
- 28. C++에서 높은 정밀도로 임의의 이중 숫자를 생성하는 방법은 무엇입니까?
- 29. SharePoint에서 계산 된 필드에 임의의 숫자를 생성하는 방법은 무엇입니까?
- 30. 복잡성이있는 임의의 숫자를 생성하는 방법이 있습니까? O (1)
정수 오버 플로우를 처리하거나 인수에 오류 서명하지 않는다는 것입니다 '생성 '난수? 숫자 배열에서 임의의 인덱스를 선택하기 만하면됩니까? – Rohan