2011-10-24 4 views
2

랜덤 생성기를 사용하여 간단한 덧셈 시퀀스를 설정하려고합니다. 숫자는 정수 여야합니다. 다음은 내가 성취하고자하는 것을 보여주는 예입니다.랜덤 생성기를 사용하여 간단한 추가 시퀀스를 설정하는 중

(4, 10, 16, 22, 28,?) : 사용자는 순서에서 다음 숫자를 입력해야합니다. (각 숫자는 서로 6 개의 숫자가 있기 때문에 34입니다.)

사용자에게 생성기의 난수가 주어 지지만 서로 옆에있는 2 개의 숫자는 다음 숫자로 갈수록 같은 값을 가져야합니다 두. 예 : = 6 10-4 = 6 16-10, 22-16 = 6

private static void simpleAdditionSequence() { 
    int num1, num2, num3, num4, num5, numUser; 
    Random generator = new Random(); 

    num1 = generator.nextInt(2147483647); 
    System.out.println(num1); 
} 

내가 NUM2를 만드는 방법을 알아내는 갖는있어 문제. 방금 다른 발전기를 사용하면 num1보다 작을 수 있으며 나머지 숫자처럼 거리에 대해 동일한 값을 가져야합니다.

(주 - 나는 그래서 임의의 정수를 생성 할 수 있습니다 2,147,483,647을 사용하는 문제에

+0

어림짐작으로, 제목에 SO에 대한 질문에 "[solved]"라는 태그가 지정되지 않았지만 최선의 대답을 받아 들여야합니다. – brc

+1

@ MJ93 : 두 개의 사소한 뾰족 함 ... Java 작성 * Integer.MAX_VALUE *는 오류가 발생하기 쉽고 "2147483647"* 쓰기보다 "의도"가 더 잘 전달됩니다. 그런 다음 * nextInt (Integer.MAX_VALUE) *를 사용하여 단계를 고집한다면 실제로 * long *을 사용하여 문제를 해결할 수 있습니다. * int *를 사용하는 솔루션은 단계가 커질 때 중단됩니다 (* int * 당신은 빨리 "감싸고"음수 값을 처리 할 것입니다.) – TacticalCoder

+0

고맙습니다. 정수 값을 사용할 필요가 없다는 것을 배웠습니다. 나는 다음과 같이 제한 할 수 있습니다 : 100. 그러나 그것은 좋은 것입니다. – MJ93

답변

3

만 두 숫자가 실제로 임의 있습니다 -. 첫 번째 숫자와 숫자 사이의 차이를

두 가지를 생성합니다. . 임의의 정수, 기본 하나, 단계에 대한 하나 될 내용

(한 가지 피려 - 당신이 오직 난수 발생기를 작성해야 내가 n 귀하의 프로그램. 난수가 필요할 때마다 해당 발전기를 다시 사용하십시오. 임의의 숫자가 필요할 때마다 새로운 생성기를 생성하면 숫자에 원하는 임의성 속성이 없습니다.)

+0

게시하기 전에 감사드립니다. 당신이 말했듯이, 내 첫 번째 숫자와 그 차이가 유일한 randoms 있습니다. 차이에 처음 번호를 추가하는 등의 작업을 할 수 있습니다. – MJ93

-1

먼저 off, nextInt()은 int 데이터 유형 만 반환합니다.

둘째, 궁극적으로 생성하는 패턴 인 경우 첫 번째 숫자를 생성 한 다음 두 번째 숫자와의 차이 만 생성하면 남은 숫자를 직접 계산할 수 있습니다. 예제를 사용하려면

num1 = generator.nextInt(2147483647);num1 변수에 4 숫자를 저장합니다. 그런 다음 무작위 증분 값을 생성합니다. nextInt() 메서드를 다시 호출하고 increment 변수에 6을 저장한다고 가정 해 봅시다. 그 다음 :

num2 = num1 + increment; // 4 + 6 = 10 
num3 = num2 + increment; // 10 + 6 = 16 
// Etc... 
관련 문제