ユーザーが指定した辺の数でダイを回転させるプログラムを作成しました。問題は、あまりにも予測可能なことです。ダイスローリングプログラムは、すべてのランで乱数の同じシーケンスを生成します
私はCodeBlocks IDEを使用しています。コンパイラはGCCです。プログラムはデバッグビルドとリリースビルドの両方としてうまくコンパイルされますが、どのビルドオプションを選択しても実行時に毎回同じ値が返されます。私はこれを使うことはできません。意図した使い方は卓上RPGツールなので、ダイスが転がるパターンを知っていれば、スマートプレイヤーが不正行為をするのは比較的簡単です。
この問題を解決する最も簡単な方法は何ですか?ここで
はソースです:
#include <iostream> /* for input and output */
#include <cstdlib> /* for random numbers */
using namespace std;
void rolldie() {
cout << "How many sides to the die?" << endl << "D";
int die;
cin >> die;
int roll = rand() % die +1;
cout << endl << "The die rolled " << roll << endl << endl << "Roll another? (Y for yes, anything else for no; Capitalization counts) ";
}
int main() {
rolldie();
char again;
cin >> again;
while (again == 89) {
rolldie();
cin >> again;
}
return 0;
}
あなたのコードにリンクしないでください - ここでそれを示しています。 –
rand()を呼び出す前にsrand()を使用して乱数ジェネレータをシードします。 time()はまともな種を作る。 – Cameron
どの乱数生成器を使用していますか?あなたは確かにそれを播種しなければなりませんが、あなたに*どのように*あなたに伝えるために、あなたは私たちにもっと詳細を与えなければなりません。 – Thilo