상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - C++에서 std::random의 사용법은?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
C++에서 `std::random` 라이브러리는 난수 생성과 관련된 다양한 기능을 제공하는 표준 라이브러리의 일부입니다. C++11부터 도입된 이 라이브러리는 난수 생성기와 분포를 분리하여 보다 유연하고 강력한 난수 생성 기능을 제공합니다. 이 글에서는 `std::random`의 기본 사용법, 난수 생성기, 분포, 그리고 예제를 통해 이를 설명하겠습니다. 1. 기본 구성 요소 `std::random` 라이브러리는 크게 두 가지 주요 구성 요소로 나눌 수 있습니다: - 난수 생성기 (Random Number Generators) : 난수를 생성하는 알고리즘입니다. 예를 들어, `std::default_random_engine`, `std::mt19937` (Mersenne Twister), `std::minstd_rand` 등이 있습니다. - 분포 (Distributions) : 생성된 난수를 특정한 범위나 형태로 변환하는 역할을 합니다. 예를 들어, `std::uniform_int_distribution`, `std::uniform_real_distribution`, `std::normal_distribution` 등이 있습니다. 2. 난수 생성기 C++에서 난수 생성기는 `std::random_device`를 사용하여 시드(seed)를 생성하거나, 특정한 시드를 사용하여 <a href='https://sangseek.com/sangseeks/초기화/ko'>초기화</a>할 수 있습니다. 예를 들어: ```cpp include <random> include <iostream> int main() { // 난수 생성기 초기화 std::random_device rd; // 시드 생성기 std::mt19937 gen(rd()); // Mersenne Twister 엔진 사용 // 난수 생성 std::uniform_int_distribution<> dis(1, 6); // 1부터 6까지의 균일 분포 // 주사위 던지기 for (int n = 0; n < 10; ++n) { std::cout << dis(gen) << ' '; // 난수 출력 } std::cout << std::endl; return 0; } ``` 위의 예제에서 `std::random_device`는 하드웨어 기반의 난수 생성기를 사용하여 시드를 생성합니다. `std::mt19937`는 Mersenne Twister 알고리즘을 기반으로 한 난수 생성기입니다. `std::uniform_int_distribution`은 1부터 6까지의 균일한 정수를 생성합니다. 3. 분포 분포는 난수 생성기에서 생성된 난수를 특정한 범위나 형태로 변환하는 데 사용됩니다. 다양한 분포가 있으며, 그 중 몇 가지를 소개합니다: - 균일 분포 (Uniform Distribution) : 모든 값이 동일한 확률로 발생합니다. - `std::uniform_int_distribution`: 정수의 균일 분포. - `std::uniform_real_distribution`: 실수의 균일 분포. - 정규 분포 (Normal Distribution) : 평균을 중심으로 한 종 모양의 분포입니다. - `std::normal_distribution`: 정규 분포를 따르는 실수 생성. - 기타 분포 : 이항 분포, 포아송 분포 등 다양한 분포가 제공됩니다. 4. 예제 아래는 정규 분포를 사용하여 난수를 생성하는 예제입니다. ```cpp include <random> include <iostream> int main() { std::random_device rd; // 시드 생성기 std::mt19937 gen(rd()); // Mersenne Twister 엔진 사용 // 평균 0, 표준편차 1인 정규 분포 std::normal_distribution<> dis(0, 1); // 난수 생성 for (int n = 0; n < 10; ++n) { std::cout << dis(gen) << ' '; // 난수 출력 } std::cout << std::endl; return 0; } ``` 이 예제에서는 평균이 0이고 표준편차가 1인 정규 분포에서 난수를 생성합니다. 5. 결론 C++의 `std::random` 라이브러리는 강력하고 유연한 난수 생성 기능을 제공합니다. 난수 생성기와 분포를 분리하여 다양한 난수 생성 시나리오를 지원합니다. 이를 통해 게임 개발, 시뮬레이션, 통계적 샘플링 등 다양한 분야에서 활용할 수 있습니다. C++11 이후의 표준 라이브러리를 활용하여 보다 안전하고 효율적인 난수 생성을 구현해 보세요.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기