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#,这种分组是怪诞的.
您可以使用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)