如何生成一个介于-10和10之间的随机#,并将该值添加到列表中的每个对象中';s的位置Vector2

本文关键字:列表 添加 对象 位置 Vector2 一个 何生成 随机 之间 | 更新日期: 2023-09-27 18:25:03

我正在C#中制作一个程序,该程序创建一个树对象列表,这些对象具有以类似网格的方式显示所有对象的图形。在创建它们之后,我将把它移到每个单独的树在x和y轴上移动-10到10之间的随机距离;这将有望产生一种散落树木的外观。我基本上还是C#的新手。

我的主要问题是:

我不确定是否可以用我的方法生成-10到10之间的数字

int randX = RandomClass.Next(-10, 10);

当我"偏斜"(偏斜是一个松散的术语,我在这里的意思是"移动",它不是字面意思)每棵树的位置时,我似乎将垂直和水平移动的节省量应用于许多树,而不是单独应用于一棵树

public void SkewTrees() 
        {
            if (skewed == false)
            {
                Vector2 emptyVector = Vector2.Zero;
                int randX = RandomClass.Next(0, 100);
                int randY = RandomClass.Next(0, 100);
                Vector2 randSkew = new Vector2(randX , randY);
                position=new Vector2(position.X+randSkew.X, position.Y+randSkew.Y);
                skewed = true;
            }
        }

带实际输出链接的完整代码:http://pastebin.com/zZ246t7U

如何生成一个介于-10和10之间的随机#,并将该值添加到列表中的每个对象中';s的位置Vector2

对于-10到10之间的随机数,请尝试以下方法:

int rand = RandomClass.Next(1, 10) - RandomClass.Next(1, 10);

 int rand = RandomClass.Next(0, 20) - 10;

int rand = RandomClass.Next(-10, 10);

同样有效。

Random类生成一个具有确定性和可重复性的数字序列。它从Environment.TickCount中提取种子,大约每15分钟变化一次。因此,你在15毫秒的时间间隔内构建的每个随机实例都会产生完全相同的数字。

为了修复代码,您需要确保使用良好的种子值或重用单个Random类。

我建议您使用单个Random实例创建一个静态变量。您的整个程序都可以重用此变量。