可能性の重複は:
Random number generator only generating one random numberコードはデバッガでステップ実行するときにのみ正しく実行されますか?
私は少しはこのしばらく前に困惑しました。 (システム時間ベース)
public blockType generateRandomBlock()
{
Random random = new Random();
int makeBlockOfType = random.Next(0, 100);
blockType t = blockType.normal;
if (makeBlockOfType <= 80 && makeBlockOfType >= 60)
{
t = blockType.blue;
}
else if (makeBlockOfType > 80 && makeBlockOfType <= 95)
{
t = blockType.orange;
}
else if (makeBlockOfType > 95 && makeBlockOfType <= 100)
{
t = blockType.green;
}
return t;
}
かなり単純な、それはランダムに生成された番号に基づいてenum
値を返す:私は、次のコードを持っています。残念なことに、いくつかの奇妙な理由から、すべてのブロックが1つの色かそれ以外の色を持っています。しかし、これをデバッガでステップ実行して実行した後に結果を確認すると、ブロックが複数の色になっていることがわかりました。なぜこれが起こっているのか、私は少し混乱しています。
このため、Microsoftの代わりにMonoコンパイラを使用するMonoGameを使用しています。これが問題だろうか?私は、このコードをコンストラクタにインラインで配置しようとしましたが、どこから呼び出されているのでしょうか(私はコンパイラがコードをインラインで推測していると思います)。
ビルドを実行させるのではなく、Visual Studioを個別に再起動しようとしました。変更はありません。
ご意見、ご協力をお待ちしております。
試みをする方法のうち、ランダム作成を移動するには、それが役立つはずです。 –
'新しいRandom()'シードは時間を使用します。これは数ミリ秒間一定のままです。 – CodesInChaos
デバッグでは、呼び出しの間に時間があり、実際には異なる種を取得するためです。 – Archy