C#的Random与Unity3D的Random.Range()

2023-07-30 15:20:10 浏览数 (2)

C#的Random

在C#中,Random类用于生成伪随机数。它位于System命名空间下,所以要在代码中使用Random类,需要添加以下using语句:

代码语言:javascript复制
using System;

在创建Random对象时,可以选择使用当前时间作为种子,也可以指定一个整数值作为种子。如果使用相同的种子来创建Random对象,就会得到相同的随机数序列。下面是一个创建Random对象的示例:

代码语言:javascript复制
Random random = new Random();

使用Random对象生成随机数的方式有多种。下面是几个常用的方法:

①生成一个非负的随机整数:使用Next()方法。

例如,要生成一个随机整数,可以这样写:

代码语言:javascript复制
int randomNumber = random.Next();

要生成一个介于0和99之间的随机整数,可以这样写:

代码语言:javascript复制
int randomNumber = random.Next(100);

②生成一个指定范围内的随机整数:使用Next(minValue, maxValue)方法。

例如,要生成一个介于1和10之间的随机整数,可以这样写:

代码语言:javascript复制
int randomNumber = random.Next(1, 11);

③生成一个随机的双精度浮点数:使用NextDouble()方法。

例如,要生成一个介于0和1之间的随机浮点数,可以这样写:

代码语言:javascript复制
double randomNumber = random.NextDouble();

④生成随机字节数组:NextBytes(byte[] buffer)

该方法用于将指定数量的随机字节填充到给定的字节数组中。示例代码如下:

代码语言:javascript复制
byte[] buffer = new byte[10];
random.NextBytes(buffer);

⑤生成随机布尔值

使用Next(2)方法生成一个介于0(包括)和2(不包括)之间的随机整数,然后通过判断该整数是否为0来决定随机布尔值的生成。如果生成的整数为0,则为false,否则为true。

代码语言:javascript复制
Random random = new Random();
bool randomBool = random.Next(2) == 0;

Unity3D的Random.Range()

在Unity游戏开发引擎中,Random.Range()是一个用于生成随机数的静态方法。它属于Unity引擎的内置API,位于UnityEngine.Random类中。

Random.Range()方法有多个重载形式,可以用于生成整数、浮点数和Vector类型的随机数。以下是几个常用重载形式的示例:

①生成一个指定范围内的整数:使用整数重载形式。

例如,要生成一个介于1和100之间(包括1和100)的整数随机数,可以这样写:

代码语言:javascript复制
int randomNumber = Random.Range(1, 101);

②生成一个指定范围内的浮点数:使用浮点数重载形式。

例如,要生成一个介于0.0和1.0之间(包括0.0和1.0)的浮点数随机数,可以这样写:

代码语言:javascript复制
float randomFloat = Random.Range(0.0f, 1.0f);

③生成一个Vector类型的随机数:使用Vector重载形式。

例如,要生成一个在三维空间中随机位置的Vector3类型的随机数,可以这样写:

代码语言:javascript复制
Vector3 randomPosition = Random.Range(new Vector3(-10, 0, -10), new Vector3(10, 0, 10));

需要注意的是,Random.Range()方法返回的随机数范围是闭区间,即最小值和最大值都有可能被生成。此外,由于Random.Range()是静态方法,可以直接通过类名调用,无需创建Random对象。

使用Random.Range()方法可以很方便地生成需要的随机数,如游戏中的随机位置、随机角度、随机颜色等。在使用时,根据具体需求选择适当的重载形式,并合理设置参数范围即可。

除了常用的Random.Range()方法之外,Unity的Random类还提供了一些其他方法,下面列举几个常用的方法:

①Random.value

该属性用于生成一个介于0和1之间的随机浮点数。示例代码如下:

代码语言:javascript复制
float randomValue = Random.value;

②Random.insideUnitCircle

该静态方法返回一个位于单位圆内(即半径为1)的随机点的二维Vector2类型。示例代码如下:

代码语言:javascript复制
Vector2 randomPoint = Random.insideUnitCircle;

③Random.insideUnitSphere

该静态方法返回一个位于单位球内(即半径为1)的随机点的三维Vector3类型。示例代码如下:

代码语言:javascript复制
Vector3 randomPoint = Random.insideUnitSphere;

④Random.onUnitSphere

该静态方法返回一个位于单位球上的随机点的三维Vector3类型。示例代码如下:

代码语言:javascript复制
Vector3 randomPoint = Random.onUnitSphere;

⑤Random.rotation

该静态方法返回一个随机旋转的四元数Quaternion类型。示例代码如下:

代码语言:javascript复制
Quaternion randomRotation = Random.rotation;

这些方法可以用于生成各种随机值,例如在游戏中生成随机位置、随机方向、随机旋转等。根据具体需求,选择适当的方法来获取所需的随机数或随机向量。需要注意的是,Random.valueRandom.insideUnitCircleRandom.insideUnitSphereRandom.onUnitSphere返回的随机点都是在指定空间中的单位范围内生成的。

0 人点赞