重複の可能性:
1 つの乱数のみを生成する乱数ジェネレーター
この数分前、私は少し当惑しました。次のコードがあります。
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 を個別に再起動しようとしました。変更はありません。
どんな提案や助けも大歓迎です!