📜  unity 从随机数中排除数字 - C# (1)

📅  最后修改于: 2023-12-03 14:48:12.372000             🧑  作者: Mango

Unity 从随机数中排除数字 - C#

在Unity中,我们有时候需要生成随机数,但在生成随机数的过程中,我们希望排除一些数字。在这篇文章中,我们将讨论如何使用C#在Unity中从随机数中排除数字。

方法1:使用while循环

我们可以使用while循环,在生成随机数的过程中,不断检查生成的数字是否在指定的排除数字列表中。如果是,则继续生成,直到生成的数字不在排除数字列表中。

List<int> excludeNumbers = new List<int> { 1, 3, 5, 7 }; // 要排除的数字列表

int num = Random.Range(0, 10); // 生成0-9之间的随机数

while (excludeNumbers.Contains(num))
{
    num = Random.Range(0, 10); // 如果生成的数字在排除列表中,继续生成,直到不在排除列表中为止
}

Debug.Log(num); // 打印生成的随机数
方法2:使用Linq

除了使用while循环以外,我们还可以使用Linq。Linq提供了一种方便的方式来筛选出不在排除数字列表中的数字。

List<int> excludeNumbers = new List<int> { 1, 3, 5, 7 }; // 要排除的数字列表

int num = Enumerable.Range(0, 10) // 生成0-9之间的数字序列
            .Except(excludeNumbers) // 排除排除数字列表中的数字
            .OrderBy(x => Random.value) // 对结果序列随机排序
            .FirstOrDefault(); // 获取结果序列的第一个数字

Debug.Log(num); // 打印生成的随机数

在上面的例子中,我们使用了Enumerable.Range生成了0-9的数字序列,然后使用Except方法排除了排除数字列表中的数字。接着,我们使用OrderBy将结果序列随机排序。最后,我们使用FirstOrDefault获取结果序列的第一个数字,即生成的随机数。

结论

这篇文章介绍了两种方法来在Unity中从随机数中排除数字。你可以根据自己的需求选择其中一种方法来实现。使用while循环或Linq都可以很好地解决这个问题,具体方法根据自己的团队约定来定。