gpt4 book ai didi

xna - 我随机做错了什么?

转载 作者:行者123 更新时间:2023-11-30 13:20:07 25 4
gpt4 key购买 nike

我有一些代码使用随机数来确定对象是否特殊。我在经常重置的 4 个对象中的每一个上都使用了这段代码。

Random rand = new Random();

int i = rand.Next(1, 25);

if (i == 1)
{
thiss.typer = "boulder";
thiss.texture = Content.Load<Texture2D>("rock");
}
else if (i == 2)
{
thiss.typer = "ice";
thiss.texture = Content.Load<Texture2D>("ice");
}
else if (i == 3)
{
thiss.typer = "bomb";
thiss.texture = Content.Load<Texture2D>("bomb");
}
else
thiss.typer = "normal";

但每次我执行此代码时,当它创建 4 个对象时,当它使其中一个对象变得特殊时,它会出于某种原因使所有对象都变得特殊。这段代码有什么问题吗,或者我是否需要展示更多我的代码来阐明它?

最佳答案

我能想到发生这种情况的两个原因。

首先,也许你不小心在你的对象之间共享了一个引用,所以 thiss.typer 在所有 4 种情况下都引用了同一个对象。

其次,更有可能的是,您创建的随机对象共享相同的种子,因此 rand.Next 在所有 4 个实例中返回相同的数字。当您执行不带参数的 new Random() 时,种子将基于当前系统时间。如果您快速连续多次执行此操作,则种子可能是相同的。

您可以尝试使用相同的 Random 对象,而不是每次使用时都创建一个新对象。这样您也可以避免不必要地创建大量对象。

关于xna - 我随机做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10741230/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com