乱数を生成する
編集C言語
編集#include <stdlib.h>
#include <stdio.h>
int main(void) {
// 乱数の初期化
srand(time(NULL));
// 1から6の乱数を生成
const int r = rand() % 6 + 1;
int in;
print("1から6の数を入力してください:");
scanf("%d", &in);
print("\n");
if (r == in) {
puts("当たり⭕");
} else {
puts("ハズレ❌");
}
return 0;
}
C++
編集#include <iostream>
#include <cstdlib>
int main() {
// 乱数の初期化
std::srand(std::time(NULL));
// 1から6の乱数を生成
const int r = std::rand() % 6 + 1;
int in;
std::cout << "1から6の数を入力してください:";
std::cin >> in;
std::cout << std::endl;
if (r == in) {
std::cout << "あたり⭕";
} else {
std::cout << "ハズレ❌";
}
std::cout << std::endl;
return 0;
}
rand/std::randの問題点
編集0
からRAND_MAX
までの一様分布のみを生成する- 線形合同法により生成することがある
- 周期が
回避策:
- ライブラリを使用する
- (C++):
std::random
やメルセンヌ・ツイスタ法による乱数生成を行うstd::mt19937
、std::mt19937_64
を使用する