これはおそらくばかげた質問ですが、私はこの概念に本当に苦労しています。配列とrand()関数について説明するチュートリアルを行っています。私には2つの問題があります。
1つ目は、明らかに1つのサイコロをシミュレートするために、1〜6の数字をランダムに生成する必要があることです。本はこれを示唆しています:
int RollOne( void ) {
return (rand() % 6) + 1;
}
そうですね、rand()は0から32767までの任意の数を生成できます。次に、この数値を6で割った余りを求め、1を加算します。たとえば、3245はランダムに生成されます。それを6で割り、540.8333を与え、余りを取ります。8.333(私が信じる8に切り捨てられます)そして1を追加します。私が怒っていない限り、それは1から6の間ではない9になります。ただし、プログラムは正常に実行され、そのコードを使用して1〜6の数値を取得する方法がわかりません。どんな助けでも大歓迎です。
私が抱えている2番目の問題は、それほど大きな問題ではありませんが、関連性があります。この本は、このコードの意味を省略しています。
srand( clock() );
言及されているのは、srand()がclock()によって提供されるシードを使用して乱数ジェネレーターを初期化することだけです。さて、実際にclock()に何かを入力できますか?もしそうなら、その効果は何ですか?srand(clock())が何をするかについてのちょっとした説明は完璧でしょう。
長い投稿で申し訳ありませんが、壁の「o」テキストを気にしないでください。どんな助けでも本当にありがたいです。
ありがとう、マイク
回答
ありがとうございました:私は自分が何をしていたかを理解しています。皆さんが示しているように、%演算子は除算せず、最高の倍数とオペランドの違いを見つけるだけです。とった!余りは小数を意味しているような印象を受けました。つまり、7/2 = 3.5の場合、余りは0.5です。書き留めたので、私がどれほど愚かであったかがわかります。私のAレベルの数学が何かを考慮してくれてうれしいです.....
ありがとう!