如何在C#中使用随机数?

Sla*_*ard 5 c# random xna

我在C#w/XNA上工作Pong.

我想使用一个随机数(在一个范围内)来确定球是否直线,或以一定角度反弹,以及球击中球时球的移动速度.

我想知道如何实现它.

Qua*_*ter 14

使用Random类.例如:

Random r = new Random();
int nextValue = r.Next(0, 100); // Returns a random number from 0-99
Run Code Online (Sandbox Code Playgroud)

  • 值得注意的是,您应该只创建一个*单个实例*Random(每个线程).对于简单的单线程游戏,使其成为派生游戏类的"公共静态只读"成员就是我通常所做的.另见Jon Skeet的回答:http://stackoverflow.com/questions/3217651/how-do-i-use-random-numbers-in-c/3218084#3218084 (3认同)

Jon*_*eet 8

除非您需要加密安全号码,Random否则应该没问题......但有两点需要注意:

  • 每次需要时都不应创建新实例.如果在不指定种子的情况下创建实例,它将使用当前时间作为种子 - 这意味着如果您快速连续创建多个实例,其中许多将生成相同的数字序列.通常,您可以创建一个持久的实例Random并重复使用它.
  • 它不是线程安全的.如果需要从多个线程生成随机数,则应考虑每个线程有一个实例.阅读此博客文章以获取更多信息 - 但请务必阅读评论,因为它们具有非常有用的信息.