PHP

[java] 난수 생성을 응용해서 사칙연산 랜덤 생성하기

미스털이 사용자 2024. 11. 27. 11:23
반응형

사칙연산 문제와 답을 랜덤으로 생성하는 걸 만들었다.

핵심은 이항인데, 뺄셈이나 나눗셈의 정답이 원하지 않는 범위 (음수거나 소수)가 나올 경우에 대비해서다.

 

public ArrayList<String> getCalculProblem() {
        ArrayList<String> result = new ArrayList<String>();
        //사칙연산 중 하나 선택
        //가 = 1, 감 = 2, 승 = 3, 제 = 4
        int opt = (int) (Math.random() * 4) + 1;

        //문제에 등장하는 숫자
        int problem_1 = 0, problem_2 = 0, solution = 0;
        String opt_str = "", problem_str = "";
        if(opt == 1) {
            opt_str = "+";
            problem_1 = getNumber(2);
            problem_2 = getNumber(2);

            solution = problem_1 + problem_2;
        } else if(opt ==2) {
            opt_str = "-";
            problem_2 = getNumber(2);
            solution = getNumber(2);

            problem_1 = solution + problem_2;
        } else if (opt == 3) {
            opt_str = "×";
            problem_1 = getNumber(1);
            problem_2 = getNumber(1);

            solution = problem_1 * problem_2;
        } else if (opt == 4) {
            opt_str = "÷";
            problem_2 = getNumber(2);
            solution = getNumber(1);

            problem_1 = solution * problem_2;
        }

        //문제 (식) 만들기
        problem_str = String.valueOf(problem_1) + " " + opt_str + " " + String.valueOf(problem_2) + " = ";
        SOLUTION_NUMBER = solution;

        /*
        결과 제출
        [0] = 식
        [1] = 답
         */
        result.add(0, problem_str);
        result.add(1, String.valueOf(solution));

        return result;
    }

 

여기서 자리수에 맞춰 숫자를 랜덤하게 만드는 getNumber함수도 있다.

//자리수에 맞춰 숫자 랜덤생성
    public Integer getNumber (int jarissu) {
        int range = 0;
        if(jarissu == 1) {
            range = 10;
        } else if (jarissu == 2) {
            range = 100;
        }

        return (int) (Math.random() * range) + 1;
    }

 

 

반응형