C言語/乱数
ナビゲーションに移動
検索に移動
乱数を生成する
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の問題点
- テンプレート:Codeからテンプレート:Codeまでの一様分布のみを生成する
- 線形合同法により生成することがある
- 周期が
回避策:
- ライブラリを使用する
- (C++): テンプレート:Codeやメルセンヌ・ツイスタ法による乱数生成を行うテンプレート:Code、テンプレート:Codeを使用する