先週、私はVBAでテストを受けなければなりませんでした。私はちょっとした "ゲーム"をコーディングしなければなりませんでした。 - >Int (100 * Rnd + 1)
VBA Integer vs Longは、乱数が1から100の範囲で選択された数に等しいかどうかをチェックしようとします。
- コール機能が
- は1〜100(1及び付属100)との間の乱数を生成するランダム化
- (付属1、100)1と100の間の数を選び:これらはルールました
- ランダム番号=選択した番号を確認します。
- 5.1 trueの場合、私はあなたがの目的を願っています。3.
のステップに戻って、カウンタに+ 1を追加し、falseの場合はゲームが
5.2終了し、印刷カウンターに対抗するために+1を追加ゲーム"。
私は整数(16ビット)としてカウンタを初期化しました。私の先生は、カウンタがオーバーフローする可能性があることを教えてくれました。オーバーフローの可能性が小さくなるようにLong(32ビット)を使用することをお勧めします。
私は、選んだ数字が生成された数字と等しい確率が1:100であるため、カウンタで32000回の試行に達することはほとんど不可能だと彼に言った。
彼は答えました:しかし、それはまだ可能です。
私の質問:
それはデータ型が整数である場合、カウンタがオーバーフローかもしれないことは可能ですか?はいの場合、チャンスは何ですか?いいえ、どうすればそれを証明できますか?
なぜこの問題は統計上ではなく、stackoverflowでですか?
これは簡単です。あなたがRnd関数とVBAを裏で知っているので、統計上の人はそうではありません。
ランダム関数はあなたに同じ# 'sの背中を与えることができ、それは 'あなたが一緒に辞書を実行した場合、あなたはエントリを追加して、チェックすることができ100の袋のうちの1を取り、99を出るようではありませんIsTrueRandom(xは整数)は 'dic.Exists(x)'のようなものです。これはあなたの答えに沿って何かを与えるが、残りの数字が減少するにつれて遅くなる。あなたの先生は、#35回100回、#34 1000回、#20百万回を選ぶことができると言っています。 –