JavaScript

[JavaScript] 특정 범위 랜덤수 생성하여 버블소팅하기. Math

SangRok Jung 2022. 4. 14. 21:50
반응형

랜덤수를 추출하기 위해서는 내장객체 Math중 Math.random과 Math.foor()를 사용해야한다.

Math 내장 객체중 가장 많이 사용되는 4가지에 대해 먼저 알아보겠다.

  1. Math.random()
  2. Math.floor()
  3. Math.round()
  4. Math.ceil()

 

Math.random()

Math.random() 함수는 0 이상 1 미만의 구간에서 근사적으로 균일한(approximately uniform) 부동소숫점 의사난수를 반환하며, 이 값은 사용자가 원하는 범위로 변형할 수 있다. 난수 생성 알고리즘에 사용되는 초기값은 구현체가 선택하며, 사용자가 선택하거나 초기화할 수 없다.

 

 구문

0이상 1미만의 난수를 생성하기

<body>
    <script>
        let a;
        a = Math.random()

        console.log(a)

        /0.19153956196081512
    </script>
</body>

 

 

 

 

Math.floor()

Math.floor() 함수는 주어진 숫자와 같거나 작은 정수 중에서 가장 큰 수를 반환합니다.

= 소숫점 뒤를 잘라버리는 함수

구문

Math.floor(x)
<body>
    <script>
        console.log(Math.floor(5.95));
        // expected output: 5
            
        console.log(Math.floor(5.05));
        // expected output: 5
            
        console.log(Math.floor(5));
        // expected output: 5
            
        console.log(Math.floor(-5.05));
        // expected output: -6
    </script>
</body>

매개변수

x= 숫자

반환 값

주어진 수 이하의 가장 큰 정수.

 

 

 

 

 

Math.round()

Math.round() 함수는 입력값을 반올림한 수와 가장 가까운 정수 값을 반환합니다.

= 반올림

 

문법

Math.round(x)
<body>
    <script>
        console.log(Math.round(0.9));
        // expected output: 1

        console.log(Math.round(5.95), Math.round(5.5), Math.round(5.05));
        // expected output: 6 6 5

        console.log(Math.round(-5.05), Math.round(-5.5), Math.round(-5.95));
        // expected output: -5 -5 -6
    </script>
</body>

매개 변수

x = 수

반환 값

입력값을 반올림한 값과 가장 가까운 정수를 의미합니다.

 

 

 

Math.ceil()

Math.ceil() 함수는 주어진 숫자보다 크거나 같은 숫자 중 가장 작은 숫자를 integer 로 반환합니다.

= 올림
 

문법

Math.ceil(x)
<body>
    <script>
        console.log(Math.ceil(6.1))
        console.log(Math.ceil(6.9))
        console.log(Math.ceil(5.9))
        console.log(Math.ceil(6))

        //7
        //7
        //6
        //6
    </script>
</body>

매개변수

x 숫자

반환값

주어진 숫자보다 크거나 같은 숫자 중 가장 작은 숫자

 

 

 


 

 

 

특정 범위 랜덤수 추출하기

<body>
    <script>

        //0~9의 랜덤수
        console.log(Math.floor((Math.random() * 10))) 
        
        //0~99의 랜덤수
        console.log(randomNum = Math.floor((Math.random() * 100)))
        
        //0~100의 랜덤수
        console.log(randomNum = Math.floor((Math.random() * 100 + 1)))
    
    </script>
</body>
 
 
 
 
 

 
 
 
 

예제

특정수 30을 받아 0~30까지의 난수를 생성한뒤 오름차순과 내림차순 배열을 생성하는 버블소트를 각각 만들어 차순 객체를 만들어 입력후 추출하시오.

 

<body>
    <script>
    	//오름 차순
        function asOrder(num)
        {
                let ranNum = []
                let stamp;

                //랜덤수 생성
                for (let i = 0; i < 10; i++)
                {
                    ranNum[i] = Math.floor(Math.random()*(num+1)); 
                }

                //오름차순
                for (let i = 0; i < ranNum.length; i++)
                {
                    for (let j = 0; j < ranNum.length - 1; j++)
                    {
                        if (ranNum[j] > ranNum[j+1] )
                        {   
                            stamp = ranNum[j];
                            ranNum[j] = ranNum[j+1];
                            ranNum[j+1] = stamp;
                        }
                        else
                        {
                            ranNum[j] = ranNum[j]
                        }
                    }
                }
                return ranNum;
                
        }
        
		//내림차순
        function dsOrder(num)
        {
            let ranNum = []
                let stamp;

                //랜덤수 생성
                for (let i = 0; i < 10; i++)
                {
                    ranNum[i] = Math.floor(Math.random()*(num+1)); 
                }

                //내림차순
                for (let i = 0; i < ranNum.length; i++)
                {
                    for (let j = 0; j < ranNum.length - 1; j++)
                    {
                        if (ranNum[j] < ranNum[j+1] )
                        {   
                            stamp = ranNum[j+1];
                            ranNum[j+1] = ranNum[j];
                            ranNum[j] = stamp;
                        }
                        else
                        {
                            ranNum[j] = ranNum[j]
                        }
                    }
                }
                return ranNum;
                
        }
		
        //차순 객체
        const orderOb = {}
		
        //객체에 입력
        orderOb.asOrder = (asOrder(30))
        orderOb.dsOrder = (dsOrder(30))

        console.log(orderOb)

    </script>
</body>
반응형