코딩 스쿨 JavaScript

언어선택 : HTMLCSSJAVAJAVASCRIPTMYSQLSQL PHP
▶ JavaScript Tutorial
JavaScript HOME
JavaScript Introduction
JavaScript Where To
JavaScript Output
JavaScript Statements
JavaScript Syntax
JavaScript Comments
JavaScript Variables
JavaScript Let
JavaScript Const
JavaScript Operators
JavaScript Arithmetic
JavaScript Assignment
JavaScript Data Types
JavaScript Functions
JavaScript Objects
JavaScript Object Properties
JavaScript Object Methods
JavaScript Object Display
JavaScript Object Constructors
JavaScript Events
JavaScript Strings
JavaScript String Methods
JavaScript String Search
JavaScript String Templates
JavaScript Numbers
JavaScript BigInt
JavaScript Number Methods
JavaScript Number Properties
JavaScript Arrays
JavaScript Array Methods
JavaScript Array Search
JavaScript Array Sort
JavaScript Array Iteration
JavaScript Array Const
JavaScript Dates
JavaScript Date Formats
JavaScript Date Get Methods
JavaScript Date Set Methods
JavaScript Math
JavaScript Random
JavaScript Booleans
JavaScript Comparisons
JavaScript If Else
JavaScript Switch
JavaScript Loop For
JavaScript Loop For In
JavaScript Loop For Of
JavaScript Loop While
JavaScript Break
JavaScript Iterables
JavaScript Sets
JavaScript Set Methods
JavaScript Maps
JavaScript Map Methods
JavaScript Typeof
JavaScript Type Conversion
JavaScript Destructuring
JavaScript Bitwise
JavaScript RegExp
JavaScript Precedence
JavaScript Errors
JavaScript Scope
JavaScript Hoisting
JavaScript Strict Mode
JavaScript this Keyword
JavaScript Arrow Function
JavaScript Classes
JavaScript Modules
JavaScript JavaScriptON
JavaScript Debugging
JavaScript Style Guide
JavaScript Best Practices
JavaScript Mistakes
JavaScript Performance
JavaScript Reserved Words

JavaScript Random

JavaScript Random: 난수 생성의 이해와 활용

JavaScript에서 **난수(Random Number)**는 Math.random() 메서드를 사용해 생성할 수 있습니다. 이 메서드는 0 이상 1 미만의 부동 소수점 값을 반환합니다. 이를 활용해 다양한 범위에서 난수를 생성하고, 그 난수를 특정 용도에 맞게 사용할 수 있습니다.

이 가이드는 JavaScript에서 난수를 생성하는 방법과, 특정 범위의 정수나 소수를 생성하는 다양한 방법을 다룹니다.


1. 기본 Math.random() 메서드

Math.random()은 0 이상 1 미만의 **난수(소수점)**를 반환합니다.

const randomNum = Math.random();
console.log(randomNum);  // 예시 출력: 0.3484527485 (0 이상 1 미만)


2. 특정 범위의 난수 생성

Math.random()은 기본적으로 0 이상 1 미만의 값을 반환하기 때문에, 이를 응용하여 다양한 범위의 난수를 생성할 수 있습니다.

2.1. 0 이상 N 미만의 난수 생성

Math.random()에 N을 곱하면 0 이상 N 미만의 난수를 생성할 수 있습니다.

// 0 이상 10 미만의 난수
const randomNum = Math.random() * 10;
console.log(randomNum);  // 예시 출력: 4.8475 (0 이상 10 미만)

2.2. 1 이상 N 이하의 정수 난수 생성

1부터 N 사이의 정수 난수를 생성하려면 Math.random()에 N을 곱한 후 **내림(Math.floor())**을 사용합니다.

// 1 이상 10 이하의 정수 난수
const randomInt = Math.floor(Math.random() * 10) + 1;
console.log(randomInt);  // 예시 출력: 7 (1 이상 10 이하)

2.3. A 이상 B 이하의 정수 난수 생성

A부터 B 사이의 정수 난수를 생성하려면, (B - A + 1) 범위를 설정하고, 그 범위에 A를 더합니다.

// 5 이상 15 이하의 정수 난수
const min = 5;
const max = 15;
const randomInt = Math.floor(Math.random() * (max - min + 1)) + min;
console.log(randomInt);  // 예시 출력: 8 (5 이상 15 이하)


3. 소수 난수 생성

Math.random()이 반환하는 값은 0과 1 사이의 부동 소수점 값이므로, 이를 활용해 원하는 소수 자릿수의 난수를 생성할 수 있습니다.

3.1. 특정 범위의 소수 난수

A부터 B 사이의 소수 난수를 생성하려면, (B - A)Math.random()을 곱한 후 A를 더하면 됩니다.

// 1.5 이상 5.5 미만의 소수 난수
const min = 1.5;
const max = 5.5;
const randomFloat = Math.random() * (max - min) + min;
console.log(randomFloat);  // 예시 출력: 3.273 (1.5 이상 5.5 미만)

3.2. 소수점 이하 N자리까지 표시

소수점 이하 N자리까지 표시하려면 toFixed() 메서드를 사용할 수 있습니다. 이 메서드는 문자열을 반환하므로, 다시 숫자로 변환하려면 parseFloat()을 사용해야 합니다.

// 0 이상 1 미만의 소수점 이하 3자리 난수
const randomFloat = Math.random().toFixed(3);
console.log(randomFloat);  // 예시 출력: 0.528

// 0 이상 1 미만의 소수점 이하 3자리 난수를 숫자로 변환
const randomFloatNumber = parseFloat(Math.random().toFixed(3));
console.log(randomFloatNumber);  // 예시 출력: 0.528


4. 배열에서 무작위 요소 선택

배열에서 임의의 요소를 선택하려면 배열의 길이에 따라 인덱스를 랜덤하게 생성하면 됩니다.

const fruits = ["apple", "banana", "cherry", "orange", "grape"];

// 배열에서 무작위 요소 선택
const randomFruit = fruits[Math.floor(Math.random() * fruits.length)];
console.log(randomFruit);  // 예시 출력: "banana"


5. 무작위로 배열 섞기 (랜덤 셔플)

배열을 무작위로 섞는 방법 중 하나는 Fisher-Yates 셔플 알고리즘을 사용하는 것입니다.

function shuffleArray(array) {
    for (let i = array.length - 1; i > 0; i--) {
        const j = Math.floor(Math.random() * (i + 1));
        [array[i], array[j]] = [array[j], array[i]];  // 배열 요소 교환
    }
    return array;
}

const numbers = [1, 2, 3, 4, 5];
console.log(shuffleArray(numbers));  // 예시 출력: [3, 5, 1, 4, 2] (무작위 순서)


6. 무작위로 Boolean 값 생성

참(true) 또는 **거짓(false)**을 무작위로 생성하려면, Math.random()을 이용해 0.5 기준으로 나누어 반환할 수 있습니다.

const randomBoolean = Math.random() >= 0.5;
console.log(randomBoolean);  // 예시 출력: true 또는 false


7. 날짜 기반 난수 생성

Date 객체를 사용해 현재 시간을 기준으로 난수를 생성할 수도 있습니다. 예를 들어, 타임스탬프를 활용해 임의의 값을 생성하는 방법입니다.

const randomSeed = Date.now() % 100;  // 현재 타임스탬프의 마지막 두 자리
console.log(randomSeed);  // 예시 출력: 57 (현재 시간에 따라 다름)


요약

  • Math.random(): 0 이상 1 미만의 부동 소수점 난수를 반환하는 메서드입니다.
  • 특정 범위 난수 생성: Math.floor() 또는 Math.ceil()을 사용해 정수 또는 소수 범위의 난수를 생성할 수 있습니다.
  • 배열에서 무작위 요소 선택: 배열의 길이를 사용해 무작위 인덱스를 생성하고 배열에서 요소를 선택할 수 있습니다.
  • 랜덤 셔플: Fisher-Yates 알고리즘을 사용해 배열을 무작위로 섞을 수 있습니다.
  • Boolean 값 생성: Math.random()을 이용해 0.5 기준으로 참/거짓 값을 생성할 수 있습니다.

JavaScript에서 난수를 효과적으로 활용하면, 다양한 무작위 작업을 수행할 수 있습니다. 이 방법들을 통해 무작위 데이터 생성, 배열 셔플, 랜덤 이벤트 처리 등을 유연하게 처리할 수 있습니다.


copyright ⓒ 스타트코딩 all rights reserved.
이메일 : startcodingim@gamil.com