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

Random.Range

建议更改

成功!

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

关闭

提交失败

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

关闭

取消

切换到手册

声明

public static float Range(float minInclusive, float maxInclusive);

描述

返回一个在 [minInclusive..maxInclusive] 内的随机 float(范围是包含的)。

如果 minInclusive 大于 maxInclusive,则数字会自动交换。

重要:上下界限都是包含的。它们之间任何给定的浮点数,包括 minInclusive 和 maxInclusive 本身,平均每十亿个随机样本出现一次。

此函数有一个 int 重载,它的工作方式略有不同,特别是在范围最大值方面。请参见下面的文档。

请参见 Random,了解有关该算法的详细信息,以及 UnityEngine.Random 可能与其他随机数生成器不同的示例。

using UnityEngine;

public class ExampleClass : MonoBehaviour { public GameObject prefab;

// Click the "Instantiate!" button and a new `prefab` will be instantiated // somewhere within -10.0 and 10.0 (inclusive) on the x-z plane void OnGUI() { if (GUI.Button(new Rect(10, 10, 100, 50), "Instantiate!")) { var position = new Vector3(Random.Range(-10.0f, 10.0f), 0, Random.Range(-10.0f, 10.0f)); Instantiate(prefab, position, Quaternion.identity); } } }

声明

public static int Range(int minInclusive, int maxExclusive);

描述

返回一个在 [minInclusive..maxExclusive) 内的随机 int(只读)。

最大参数是排外的,因此例如 Random.Range(0, 10) 返回 0 到 9 之间的值,每个值出现的概率大致相同。

如果 minInclusivemaxExclusive 相等,则该方法返回 minInclusive

如果 minInclusive 大于 maxExclusive,则输入参数将被交换,但保持它们的包含性或排外性,这取决于它们原来的位置,这意味着该方法在交换后将变为 Random.Range(minExclusive, maxInclusive)

例如,调用 Random.Range(10, 0) 不等同于 Random.Range(0, 10)Random.Range(10, 0) 返回 1 到 10 之间的值,因为 10 成为包含的最大值,而 0 成为排外的最小值。

此函数有一个 float 重载,它的工作方式略有不同,特别是在范围最大值方面,请参见上面的文档。

请参见 Random,了解有关该算法的详细信息,以及 UnityEngine.Random 可能与其他随机数生成器不同的示例。

using UnityEngine;

public class ExampleClass : MonoBehaviour { public GameObject prefab; public float zoffset = 10;

// Click the "Instantiate!" button and a new grid of `prefab` objects will be // instantiated with a random number of items in each direction. void OnGUI() { if (GUI.Button(new Rect(10, 10, 100, 50), "Instantiate!")) { // the grid will always be 1, 2, 3, 4, or 5 prefabs wide int xcount = Random.Range(1, 6); // the grid will always be 2, 3, or 4 prefabs long int ycount = Random.Range(2, 5);

for (int x = 0; x != xcount; ++x) { for (int y = 0; y != ycount; ++y) { var position = new Vector3(x * 2, zoffset, y * 2); Instantiate(prefab, position, Quaternion.identity); } }

zoffset += 2; } } }