ここには簡単な問題がありますが、これを修正する方法がわかりません! ナンバ ジェネレータを作成しようとしていますが、1 ~ 6 から乱数を選択するだけにしたいです。ゼロはありません!この質問は重複としてマークされましたが、これはC++ ではなくCであるため、そうすべきではありません。
srand(static_cast<unsigned int>(time(0)));
int dice = rand()%6;
rand() % 6
の範囲の数値を与える0..5
.範囲を取得するには 1 を追加します1..6
。
C++11 がオプションである場合は、std::uniform_int_distribution
ややシンプルでエラーが発生しにくいオプションもあります ( rand() 有害なプレゼンテーションとスライドを参照):
#include <iostream>
#include <random>
int main()
{
std::random_device rd;
std::mt19937 e2(rd());
std::uniform_int_distribution<> dist(1, 6);
for( int i = 0 ; i < 10; ++i )
{
std::cout << dist(e2) << std::endl ;
}
return 0 ;
}
この前のスレッド乱数ジェネレーターを使用すると、モジュロ バイアスがあると人々が言うのはなぜですか? クリスがコメントで指摘したモジュロバイアスを明確に説明しています。