C# Random() 不是很随机地工作

标签 c# random xna

小伙伴们快速提问

在我的游戏中,我目前需要在屏幕底部生成并向上移动的项目。一旦它们到达屏幕顶部或与玩家发生碰撞,它们就会消失,并且应该在屏幕底部沿 X 轴的随机点生成。第一个项目似乎总是在随机点生成,然而,第二个对象似乎总是在与第一个相同的点生成,尽管是使用单独的方法调用生成的。有任何想法吗?这是我正在使用的代码:

       public void ReSpawn()

        this.RandX = this.random.Next(30, 650);
        this.Position.X = RandX;
        this.Position.Y = 710;

        if (Object1.Position.Y <= -25) //If item reaches top of screen

                Object1.ReSpawn(); 

        if (Object1.rectangle.Intersects(Player.rectangle)) //Collision with player


                Object1.ReSpawn(); 

        if (Object2.Position.Y <= -25) //If item reaches top of screen

                Object2.ReSpawn();

        if (Object2.rectangle.Intersects(Player.rectangle)) //Collision with player


                Object1.ReSpawn(); 

声明使用:

    public Random random = new Random();
    public int RandX;

最佳答案

您的两个对象可能没有共享一个 Random 对象。所以这两个对象将生成相同的随机数序列。

在两个对象之间共享一个Random对象,它们应该生成不同的值。

编辑:

random 设为静态,以便所有对象都使用它。

public static Random random = new Random();

关于C# Random() 不是很随机地工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16968762/

相关文章:

c# - 高流量 C# UDP 网络

c# - XNA - 在游戏画面之间传递信息

c# - 不着色,但 "Colorize" Sprite

c# - Visual Studio 2017 - 如何在 IDE 中配置命令终端?

c# - & 热键不会在运行时消失

c# - 在 C# 中选择随机数

sql - Postgres : get random entries from table - too slow

python - Matlab 随机与 np.randn

c# - 使用 LINQ 获取包含自定义对象的列表的总和/平均值

c# - 从 c# (SharePoint 2010) 使用 wkhtmltopdf