C#/ XNA伪随机数创建

Sim*_*kie 5 c# random numbers xna-4.0

用于创建随机数的c#/ XNA过程非常快速和简单,但是,它很可能是我见过的最差的分布随机数生成器.有没有更好的方法,易于实现c#/ XNA?

rand.Next()只是不符合我的需要.

从:

static private Random rand = new Random();

我在我的程序中随机放置了对象.有时10,有时200.

当调用随机对象(x val和y val在2d平面上都是随机的)时,它们会分组.生成代码很干净并且称它们很好,干净地迭代并且为每个值提取一个新的随机数.但他们分组,明显不好,毕竟随机数不是很好.我是c#的中间技能,我从as3过来,似乎更好地处理随机性.

我很清楚它们是伪随机的,但在Windows系统上是C#,这种分组是怪诞的.

Jef*_*ata 2

您可以使用XNA 中的 System.Security.Cryptography.RandomNumberGenerator吗?

var rand = RandomNumberGenerator.Create();
byte[] bytes = new byte[4];

rand.GetBytes(bytes);

int next = BitConverter.ToInt32(bytes, 0);
Run Code Online (Sandbox Code Playgroud)

要获取最小/最大范围内的值:

static RandomNumberGenerator _rand = RandomNumberGenerator.Create();

static int RandomNext(int min, int max)
{
    if (min > max) throw new ArgumentOutOfRangeException("min");

    byte[] bytes = new byte[4]; 

    _rand.GetBytes(bytes);

    uint next = BitConverter.ToUInt32(bytes, 0);

    int range = max - min;

    return (int)((next % range) + min);
}
Run Code Online (Sandbox Code Playgroud)