可能是重复内容:
随机数生成器仅生成一个随机数
我刚才对这段代码感到有些困惑。代码如下:
相当简单,它根据随机生成的数字(基于系统时间)返回一个枚举值。不幸的是,由于某种奇怪的原因,即使对每个被放入游戏中的块运行此代码,所有块都是相同颜色。不过,当我用调试器逐步执行并在某些运行后查看结果时,我发现基于所提供的机会,这些块现在是多颜色的。 我有点困惑为什么会这样。
对此,我正在使用MonoGame,它使用Mono编译器而不是Microsoft的编译器。这可能是问题吗?我已经尝试将此代码内联到正在调用它的构造函数中,但我得到了相同的结果(我猜编译器无论如何都会内联代码)。
我已经尝试重新启动Visual Studio,而不是让运行程序进行构建; 没有变化。
非常感谢任何建议和帮助!
随机数生成器仅生成一个随机数
我刚才对这段代码感到有些困惑。代码如下:
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;
}
相当简单,它根据随机生成的数字(基于系统时间)返回一个枚举值。不幸的是,由于某种奇怪的原因,即使对每个被放入游戏中的块运行此代码,所有块都是相同颜色。不过,当我用调试器逐步执行并在某些运行后查看结果时,我发现基于所提供的机会,这些块现在是多颜色的。 我有点困惑为什么会这样。
对此,我正在使用MonoGame,它使用Mono编译器而不是Microsoft的编译器。这可能是问题吗?我已经尝试将此代码内联到正在调用它的构造函数中,但我得到了相同的结果(我猜编译器无论如何都会内联代码)。
我已经尝试重新启动Visual Studio,而不是让运行程序进行构建; 没有变化。
非常感谢任何建议和帮助!
new Random()
使用时间作为种子,该种子在几毫秒内保持不变。 - CodesInChaos