このブログを検索

2019年4月9日火曜日

【C++】 乱数の生成

【C++】 乱数の生成
(2019年4月9日)


■使用ソフト
・Visual Studio Community 2019


■言語
・C/C++


■Windows SDK バージョン
・10.0.17763.0
 ※Windows SDK バージョンの変更方法


■手順

以下の3種類の方法を記載

rand()
std::random_device
std::mt19937


<rand()>

1.基本的には以下の流れ参照
【C++】 メッセージボックスの作成

2.C++ファイル(.cpp)を以下のとおり変更する。

#pragma comment(lib,"winmm.lib")
#include <windows.h>
#include <wchar.h>

int WINAPI wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow)
{
    WCHAR wcText[256];

    srand((unsigned int)timeGetTime());

    swprintf(wcText, 256, L"%d", rand());

    MessageBox(NULL, wcText, L"乱数の生成", MB_OK);

    return 0;
}

※timeGetTime()を使用するために#pragma comment(lib,"winmm.lib")が必要

3.乱数が表示される。


<std::random_device>

1.基本的には以下の流れ参照
【C++】 メッセージボックスの作成

2.C++ファイル(.cpp)を以下のとおり変更する。

#include <windows.h>
#include <wchar.h>
#include <random>

int WINAPI wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow)
{
    WCHAR wcText[256];

    std::random_device random;

    swprintf(wcText, 256, L"%lu", random());

    MessageBox(NULL, wcText, L"乱数の生成", MB_OK);

    return 0;
}

※std::random_deviceを使用するために#include <random>が必要

3.乱数が表示される。


<std::mt19937>

1.基本的には以下の流れ参照
【C++】 メッセージボックスの作成

2.C++ファイル(.cpp)を以下のとおり変更する。

#include <windows.h>
#include <wchar.h>
#include <random>

int WINAPI wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow)
{
    WCHAR wcText[256];

    std::random_device seed;
    std::mt19937 random(seed());

    swprintf(wcText, 256, L"%lu", random());

    MessageBox(NULL, wcText, L"乱数の生成", MB_OK);

    return 0;
}

※std::random_device、std::mt19937を使用するために#include <random>が必要

3.乱数が表示される。

0 件のコメント:

コメントを投稿