我的C#XNA random()函数没有返回我喜欢的值吗?

ZSh*_*ock 3 c# xna

我知道C#中的random()函数使用处理器的时钟来返回它的值,很快我不得不做一些技巧让它在短时间内返回不同的值.现在出现了一些新的东西:我可以返回多个不同的值,但它并不是"随机"的.

我可以用这张照片解释一下自己.我让这段代码运行几秒钟......

spawnMsCounter += gt.ElapsedGameTime.Milliseconds;
        if (spawnMsCounter > 1)
        {
            spawnMsCounter -= 1;
            random = new Random();
            float x = random.Next(-1, game.Window.ClientBounds.Width);
            int y = random.Next(-1,random.Next(1,game.Window.ClientBounds.Height));
            Coins.Add(new Coin(coinTexture,x,y));
        }
Run Code Online (Sandbox Code Playgroud)

我得到了这个:http: //img62.imageshack.us/img62/4783/khrogbeta20110916154637.png

如您所见,大多数点在屏幕的顶部产生; 为什么?以及如何修复 - 或者创建一个更好的代码 - 它?

Cub*_*key 5

不要每次都创建一个新的Random对象.将它作为私有静态或您正在使用它的类中的某些东西.

  • "Random"的实例不是线程安全的.在创建静态实例时考虑到这一点.我建议使用`[ThreadStatic]`字段. (3认同)