c# - 多个对象的随机数生成

标签 c# random xna

因此,我正在尝试创建一个带有“下雨绿色代码”的类似矩阵的程序。一切进展顺利,直到我决定将所有字符串实例放入列表并从中绘制/更新。为了达到适当的效果,我需要随机化一些东西。

所有字符串都在 for 循环中创建并存储在您在此处看到的列表中。 interval 和 dropspeed 随机数会改变字符串下降的速度,以及各个字符在 sprite 表中旋转的速度。

出于某种原因,尽管我只是看到一堵文字墙同时掉落,并且所有 Sprite 都以相同的速度旋转。这些类及其各自的函数确实有效……所以问题是我在随机数初始化方面做错了什么?

for (int i = 0; i < (wWidth / 30); i++)
{
    Random random = new Random(new System.DateTime().Millisecond);
    float randInterval = NextFloat(random);
    int dropSpeed = random.Next(1, 7);
    _msList.Add(new MatrixString(chinese, randInterval, dropSpeed, dropSpeed, 1.0f, xOff, 10));
    xOff = i * 32;
}

最佳答案

您需要在 for 循环之外创建 random 实例:

Random random = new Random(new System.DateTime().Millisecond);
for (int i = 0; i < (wWidth / 30); i++)
{
    float randInterval = NextFloat(random);
    int dropSpeed = random.Next(1, 7);
    _msList.Add(new MatrixString(  
                chinese, randInterval, dropSpeed, dropSpeed, 1.0f, xOff, 10));
    xOff = i * 32;
}

在一个短的运行循环中,使用 new System.DateTime().Millisecond 播种将创建相同的种子值。因此,相同的随机数。

关于c# - 多个对象的随机数生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8953488/

相关文章:

c# - 在 C# 中使用数组的第一步

c# - 实现一个可以异步调用web方法的Excel UDF

algorithm - 用字母编码一个字节数组,输出看起来应该是随机分布的

java - 从 1-50 的生成器生成 1-100 的随机数

c# - 如何在 iPhone/iTouch 上运行 XNA 制作的游戏?

c# - C#控制台WriteLine System.FormatException:

C# 不同对象列表的通用方法

mysql - 带分页的范围随机顺序

c# - 显示窗口 15 分钟后崩溃

c# - 平铺对象位置与 MonoGame 位置不匹配