백엔드 개발 C++ C++의 난수 함수에 대한 자세한 설명

C++의 난수 함수에 대한 자세한 설명

Nov 18, 2023 pm 04:08 PM
난수 생성기 의사 난수 난수 분포

C++의 난수 함수에 대한 자세한 설명

C++의 난수 함수에 대한 자세한 설명

난수는 컴퓨터 프로그래밍에서 중요한 역할을 하며 난수 이벤트를 시뮬레이션하고 난수 시퀀스를 생성하는 데 사용할 수 있습니다. C++ 언어는 개발자가 난수를 쉽게 생성하고 적용할 수 있도록 일련의 난수 함수를 제공합니다. 이번 글에서는 C++에서 난수 함수의 사용법과 주의사항을 자세히 소개하겠습니다.

C++에서 난수 함수는 주로 의사 난수 생성 함수와 보조 난수 함수라는 두 가지 측면을 포함합니다.

먼저 C++의 의사 난수 생성 기능을 소개하겠습니다. C++11에 도입된 난수 라이브러리 <random></random>는 보다 유연하고 효율적인 의사 난수 생성 기능을 제공합니다. 여기에는 주로 다음과 같은 중요한 클래스가 포함됩니다. <random></random> 提供了更加灵活和高效的伪随机数生成函数。其主要包括以下几个重要的类:

  1. std::random_device:该类用于生成真正的随机数种子,可以通过硬件随机数发生器或操作系统提供的随机数接口来获得。
  2. std::seed_seq:该类用于生成随机数种子序列,可以将多个种子值组合在一起生成种子序列,提供更加复杂的随机数生成方式。
  3. std::mt19937std::mt19937_64:这两个类是伪随机数引擎,它们使用梅森旋转算法生成高质量的伪随机数序列。std::mt19937使用32位整数作为状态,std::mt19937_64使用64位整数作为状态。
  4. std::uniform_int_distributionstd::uniform_real_distribution:这两个类是均匀分布的随机数分布器。std::uniform_int_distribution用于生成均匀分布的整数随机数,std::uniform_real_distribution用于生成均匀分布的实数随机数。

使用这些类可以实现伪随机数的生成。首先,我们需要使用 std::random_device 生成一个真正的随机数种子。然后,通过伪随机数引擎 std::mt19937std::mt19937_64 使用种子初始化,再使用分布器 std::uniform_int_distributionstd::uniform_real_distribution 生成随机数。

下面是一段示例代码,演示了如何生成一个均匀分布的整数随机数:

#include <iostream>
#include <random>

int main() {
    std::random_device rd;
    std::mt19937 gen(rd());
    std::uniform_int_distribution<> dis(1, 100);

    for (int i = 0; i < 10; ++i) {
        std::cout << dis(gen) << " ";
    }

    return 0;
}
로그인 후 복사

运行上述代码,将会输出10个在1到100之间的随机整数。

除了伪随机数生成函数外,C++中还提供了一些辅助随机数函数,用于更方便地处理随机数。其中包括:

  1. std::rand:该函数生成一个0到RAND_MAX之间的伪随机整数,默认的RAND_MAX值为32767。需要注意的是,rand函数通常使用std::srand设置随机数种子,但是它只能生成相对较低质量的随机数。
  2. std::srand:该函数用于设置伪随机数生成器的种子值。一般来说,我们可以使用系统时间作为种子值,以保证每次运行程序生成的随机数序列都是不同的。
  3. std::shuffle:该函数用于随机打乱一个序列。它接受两个迭代器参数,将这段序列根据当前的伪随机数生成器重新排列。

辅助随机数函数通常是以C风格的函数(如randsrand

  1. std::random_device: 이 클래스는 실제 난수 시드를 생성하는 데 사용되며, 이는 하드웨어 난수 생성기 또는 운영 체제 얻을 수 있는 난수 인터페이스를 제공합니다.
  2. std::seed_seq: 이 클래스는 난수 시드 시퀀스를 생성하는 데 사용됩니다. 여러 시드 값을 함께 결합하여 시드 시퀀스를 생성할 수 있으며, 더 복잡한 난수 생성 방법.
  3. std::mt19937, std::mt19937_64: 이 두 클래스는 Mersenne 회전 알고리즘을 사용하여 높은 난수를 생성하는 의사 난수 엔진입니다. 품질 의사 난수 시퀀스. std::mt19937는 32비트 정수를 상태로 사용하고, std::mt19937_64는 64비트 정수를 상태로 사용합니다.
  4. std::uniform_int_distribution, std::uniform_real_distribution: 이 두 클래스는 균일하게 분포된 난수 분배기입니다. std::uniform_int_distribution은 균일하게 분포된 정수 난수를 생성하는 데 사용되고, std::uniform_real_distribution은 균일하게 분포된 실수 난수를 생성하는 데 사용됩니다.
이 클래스를 사용하여 의사 난수를 생성하세요. 먼저 std::random_device를 사용하여 실제 난수 시드를 생성해야 합니다. 그런 다음 의사 난수 엔진 std::mt19937 또는 std::mt19937_64를 통해 시드 초기화를 사용한 다음 배포자 std::uniform_int_distribution을 사용합니다. code> 또는 <code>std::uniform_real_distribution은 난수를 생성합니다.

다음은 균일하게 분포된 정수 난수를 생성하는 방법을 보여주는 샘플 코드입니다.

rrreee

위 코드를 실행하면 1에서 100 사이의 임의의 정수 10개가 출력됩니다. 🎜🎜의사 난수 생성 기능 외에도 C++에서는 난수를 보다 편리하게 처리할 수 있는 몇 가지 보조 난수 기능도 제공합니다. 여기에는 다음이 포함됩니다. 🎜
  1. std::rand: 이 함수는 0과 RAND_MAX 사이의 의사 난수 정수를 생성하며 기본값은 RAND_MAX값은 32767입니다. <code>rand 함수는 일반적으로 std::srand를 사용하여 난수 시드를 설정하지만 상대적으로 품질이 낮은 난수만 생성할 수 있다는 점에 유의해야 합니다.
  2. std::srand: 이 함수는 의사 난수 생성기의 시드 값을 설정하는 데 사용됩니다. 일반적으로 시스템 시간을 시드 값으로 사용하여 프로그램이 생성한 난수 시퀀스가 ​​실행될 때마다 달라지도록 할 수 있습니다.
  3. std::shuffle: 이 함수는 시퀀스를 무작위로 섞는 데 사용됩니다. 두 개의 반복기 매개변수를 허용하고 현재 의사 난수 생성기에 따라 시퀀스를 재배열합니다.
🎜보조 난수 함수는 일반적으로 더 간단하고 더 많은 C 스타일 함수(예: randsrand) 형태로 존재합니다. 직접 사용합니다. 그러나 이러한 함수로 생성된 난수는 품질이 낮기 때문에 실제 개발에 사용하는 것은 권장되지 않습니다. 반대로 C++11에서 제공하는 난수 라이브러리를 사용하는 것이 더 유연하고 효율적입니다. 🎜🎜요약하자면, C++는 의사 난수 생성 함수와 보조 난수 함수를 모두 포함하는 일련의 난수 함수를 제공합니다. 그 중 의사 난수 생성 기능은 사용하기가 더 유연하고 효율적이므로 실제 개발에 사용하는 것이 좋습니다. 난수를 생성하는 더 간단하고 직접적인 방법이 필요한 경우 보조 난수 기능을 사용하는 것이 좋습니다. 난수 함수를 사용할 때 생성된 난수 시퀀스의 품질과 독립성을 높이려면 적절한 난수 시드를 설정하는 데 주의를 기울여야 합니다. 🎜🎜이 글의 소개가 독자들이 C++의 난수 기능을 더 잘 이해하고 적용하는 데 도움이 되기를 바랍니다. 난수 관련 함수를 사용하려면 C++11에서 도입된 난수 라이브러리를 사용하여 유연성과 효율성을 최대한 활용하는 것이 좋습니다. 🎜

위 내용은 C++의 난수 함수에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

JavaScript에서 난수 및 문자열 생성 JavaScript에서 난수 및 문자열 생성 Sep 02, 2023 am 08:57 AM

난수 또는 영숫자 문자열을 생성하는 기능은 많은 상황에서 유용합니다. 이를 사용하여 게임의 다양한 위치에 적이나 음식을 생성할 수 있습니다. 또한 이를 사용하여 사용자에게 임의의 비밀번호를 제안하거나 파일 이름을 만들어 파일을 저장할 수도 있습니다. 나는 PHP에서 임의의 영숫자 문자열을 생성하는 방법에 대한 튜토리얼을 작성했습니다. 나는 이 게시물의 시작 부분에서 실제로 무작위인 이벤트는 거의 없으며 난수나 문자열 생성에도 동일하게 적용된다고 말했습니다. 이 튜토리얼에서는 JavaScript에서 의사 난수 영숫자 문자열을 생성하는 방법을 보여 드리겠습니다. JavaScript에서 난수 생성하기 난수 생성부터 시작해 보겠습니다. 가장 먼저 떠오르는 메서드는 부동 소수점을 반환하는 Math.random()입니다.

무작위와 의사 무작위의 차이점 무작위와 의사 무작위의 차이점 Oct 10, 2023 am 09:27 AM

무작위와 의사 무작위의 차이점은 예측 가능성, 재현성, 균일성 및 보안입니다. 세부 소개: 1. 예측 가능성. 난수는 예측할 수 없습니다. 과거의 결과를 알더라도, 의사 난수는 알고리즘과 알고리즘에 의해 생성되기 때문에 정확하게 예측할 수 없습니다. 2. 재현성, 난수는 재현할 수 없으며 매번 생성된 결과는 독립적인 반면 의사 난수는 재현할 수 있습니다. 예, 동일한 알고리즘과 시드 등을 사용하면 됩니다.

Python 2.x에서 Random.randint() 함수를 사용하여 임의의 정수를 생성하는 방법 Python 2.x에서 Random.randint() 함수를 사용하여 임의의 정수를 생성하는 방법 Jul 31, 2023 pm 12:13 PM

Python은 데이터 분석, 기계 학습, 웹 개발 및 기타 분야에서 널리 사용되는 인기 있는 프로그래밍 언어입니다. Python에서 Random 모듈은 임의의 정수를 생성하기 위한 random.randint() 함수를 제공합니다. 이 문서에서는 Random.randint() 함수를 사용하여 임의의 정수를 생성하는 방법을 설명하고 몇 가지 코드 예제를 제공합니다. 먼저, Random 모듈을 가져와야 합니다: importrandom 다음으로, rando를 호출할 수 있습니다.

기복 숫자 기복 숫자 Aug 28, 2023 pm 01:41 PM

이번 글에서는 변동수가 무엇인지 알아보고, 변동수를 확인하는 부울 함수를 사용하여 주어진 숫자가 변동수인지 확인하는 방법을 소개하겠습니다. 문제 설명 우리는 숫자를 받게 될 것이며 우리의 임무는 주어진 숫자가 변동하는지 확인하는 것입니다. 먼저 변동하는 숫자를 이해해 보겠습니다. 변동하는 숫자는 두 가지 유형의 숫자로만 구성되며 다른 숫자는 모두 같습니다. 변동하는 숫자는 "PQPQPQ" 형식이라고 말할 수 있습니다. 여기서 P와 Q는 숫자 체계에서 서로 다른 두 숫자입니다. 변동 숫자의 첫 번째와 두 번째 숫자는 결코 동일할 수 없습니다. 즉, 11111은 변동 숫자가 아닙니다. 우리는 일반적으로 중요하지 않은 변동 숫자를 변동 숫자로 간주합니다. 즉, 변동 숫자는 최소 3자리 숫자로 구성되어야 함을 의미합니다.

Python에서 가중치가 적용된 무작위 선택을 구현하는 방법은 무엇입니까? Python에서 가중치가 적용된 무작위 선택을 구현하는 방법은 무엇입니까? Sep 11, 2023 pm 09:45 PM

Python은 복잡한 코딩 작업을 개선하기 위해 광범위한 하위 수준 기능과 라이브러리를 제공하는 유연하고 효율적인 프로그래밍 언어입니다. 작업 중 하나는 모든 것이 미리 정의된 선택 확률을 갖는 측정 가능한 전략인 가중치가 부여된 불규칙 의사 결정을 수행하는 것입니다. 각 항목이 선택될 확률이 동일한 단순 무작위 선택과 달리, 가중 무작위 선택을 사용하면 각 항목이 선택될 확률을 지정할 수 있으며, 이는 다양할 수 있습니다. 이 기사는 Python에서 가중치가 적용된 무작위 선택을 얻는 방법에 대한 포괄적인 이해를 제공하는 것을 목표로 합니다. 구문 가중치가 적용된 무작위 선택을 용이하게 하는 Python의 주요 메소드는 random.choices()입니다. 기본 구문은 다음과 같습니다: random.choices(popula

C++의 난수 함수에 대한 자세한 설명 C++의 난수 함수에 대한 자세한 설명 Nov 18, 2023 pm 04:08 PM

C++의 난수 함수에 대한 자세한 설명 난수는 컴퓨터 프로그래밍에서 중요한 역할을 하며 난수 이벤트를 시뮬레이션하고 난수 시퀀스를 생성하는 데 사용할 수 있습니다. C++ 언어는 개발자가 난수를 쉽게 생성하고 적용할 수 있도록 일련의 난수 함수를 제공합니다. 이번 글에서는 C++에서 난수 함수의 사용법과 주의사항을 자세히 소개하겠습니다. C++에서 난수 함수는 주로 의사 난수 생성 함수와 보조 난수 함수라는 두 가지 측면을 포함합니다. 먼저 C++의 의사 난수 생성 기능을 소개하겠습니다. 씨

파이썬 랜덤 모듈 파이썬 랜덤 모듈 Sep 03, 2023 am 11:57 AM

프로그래밍의 세계에서는 무작위 값을 생성하는 능력이 중요한 경우가 많습니다. 게임, 시뮬레이션, 통계 모델을 개발 중이거나 단순히 프로그램에 가변성을 도입해야 하는 경우에는 난수를 생성하는 안정적이고 효율적인 방법을 갖는 것이 중요합니다. 이것이 PythonRandom 모듈이 들어오는 곳입니다. PythonRandom 모듈은 무작위 값을 생성하는 함수 세트를 제공하여 Python 프로그램에 무작위성을 쉽게 도입할 수 있도록 해줍니다. 특정 범위 내에서 난수 생성부터 목록 섞기, 무작위 이벤트 시뮬레이션, 심지어 무작위 비밀번호 생성까지 Random 모듈은 광범위한 기능을 제공합니다. 이번 블로그 게시물에서는 PythonRandom 모듈을 자세히 살펴보겠습니다. 난수를 생성하는 방법, 수행하는 방법을 배우겠습니다.

LightGBM 실전 + 무작위 검색 매개변수 조정: 정확도 96.67% LightGBM 실전 + 무작위 검색 매개변수 조정: 정확도 96.67% Jun 08, 2024 pm 10:45 PM

안녕하세요 여러분, 저는 Peter입니다. LightGBM은 고전적인 기계 학습 알고리즘이며 그 배경, 원리 및 특성은 매우 연구할 가치가 있습니다. LightGBM의 알고리즘은 효율성, 확장성 및 높은 정확성과 같은 기능을 제공합니다. 이 글에서는 LightGBM의 특징과 원리, 그리고 LightGBM과 랜덤 검색 최적화를 기반으로 한 몇 가지 사례를 간략하게 소개하겠습니다. LightGBM 알고리즘 기계 학습 분야에서 GBM(Gradient Boosting Machines)은 예측 오류를 최소화하기 위해 약한 학습기(일반적으로 의사결정 트리)를 점진적으로 추가하여 강력한 모델을 구축하는 강력한 앙상블 학습 알고리즘 클래스입니다. GBM은 종종 사전 오류를 최소화하는 데 사용됩니다.

See all articles