版本: Unity 6 (6000.0)
语言English
  • C#

Random

UnityEngine 中的类

/

实现于:UnityEngine.CoreModule

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实阅读了用户提出的每个建议更改,并在适用的情况下进行更新。

关闭

提交失败

由于某种原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

切换到手册

描述

轻松为游戏生成随机数据。

此静态类提供了几种面向游戏的简单方法来生成伪随机数

生成器是一个Xorshift 128算法,基于 George Marsaglia 的论文Xorshift RNGs。它使用来自操作系统的具有高种子进行静态初始化,并存储在原生内存中,以便在域重新加载后仍然存在。这意味着生成器在进程启动时仅播种一次,之后完全由脚本控制。

有关种子的更多详细信息,包括如何自行管理种子,请参阅InitState。要了解如何保存和恢复Random的状态,请参阅state

与 System.Random 对比

此类与 .NET Framework 类System.Random同名,并且具有类似的目的,但在某些关键方面有所不同。

静态与实例化
UnityEngine.Random是一个静态类,因此其状态是全局共享的。获取随机数很容易,因为不需要new一个实例并管理其存储。但是,在使用线程或作业时,静态状态会出现问题(如果在主线程之外使用生成器,则会出错),或者如果需要多个独立的随机数生成器时。在这些情况下,管理System.Random的实例将是更好的选择。

浮点数上限为包含
所有在UnityEngine.Random中使用或派生自基于浮点数的随机性的属性和方法(例如valueColorHSV)都将使用包含上限。这意味着,尽管与任何其他给定值一样罕见,但最大值也可能被随机返回。相反,System.Random.NextDouble()具有排他性最大值,并且永远不会返回最大值,而只会返回略低于它的数字。

性能
UnityEngine.Random中的方法经过测量,其速度比System.Random中的等效方法快 20% 到 40%。

名称解析歧义
由于类共享名称Random,因此如果通过using同时引入了SystemUnityEngine命名空间,则很容易出现CS0104“不明确引用”编译器错误。要消除歧义,请使用别名using Random = UnityEngine.Random;,完全限定类型名称,例如UnityEngine.Random.InitState(123);,或消除using System,并改为完全限定或使用来自该命名空间的类型的别名。

静态属性

insideUnitCircle返回圆内或圆上的一个随机点,半径为 1.0(只读)。
insideUnitSphere返回球体内部或球体上的一个随机点,半径为 1.0(只读)。
onUnitSphere返回球体表面上的一个随机点,半径为 1.0(只读)。
rotation返回一个随机旋转(只读)。
rotationUniform返回一个具有均匀分布的随机旋转(只读)。
state获取或设置随机数生成器的完整内部状态。
value返回 [0.0..1.0] 内的随机浮点数(范围为包含)(只读)。

静态方法

ColorHSV从 HSV 和 alpha 范围生成随机颜色。
InitState使用种子初始化随机数生成器状态。
Range返回 [minInclusive..maxInclusive] 内的随机浮点数(范围为包含)。