【发布时间】:2017-06-05 17:52:38
【问题描述】:
我正在创建一个游戏,我需要在 7 名玩家之间划分数字 1-21 以划分他们之间的 21 张牌,因此每个玩家得到 3 张牌。我需要它是随机的,所以我尝试创建一个函数,对于每个数字,它会将其添加到 7 个数组中的一个随机数组中,如果它尝试添加的数组已经有三个数字(或者在这个案例卡)然后它将该号码提供给另一张卡。提前谢谢你,大卫。
【问题讨论】:
-
那么当你写那个函数的时候发生了什么?
我正在创建一个游戏,我需要在 7 名玩家之间划分数字 1-21 以划分他们之间的 21 张牌,因此每个玩家得到 3 张牌。我需要它是随机的,所以我尝试创建一个函数,对于每个数字,它会将其添加到 7 个数组中的一个随机数组中,如果它尝试添加的数组已经有三个数字(或者在这个案例卡)然后它将该号码提供给另一张卡。提前谢谢你,大卫。
【问题讨论】:
这将为您提供一个 List<int>,其中包含 21 个随机打乱的数字。
var numbers = Enumerable.Range(1, 21);
var random = new Random();
var result = numbers.OrderBy(i => random.Next()).ToList();
现在,您可以为第一个玩家分配前三个号码,第二个分配下三个号码,依此类推。
【讨论】:
好的,使用adjan和Lestat的答案,并将其更改为unity使用的代码,这是我使用的代码。虽然我确信他们的代码可以在标准 C# 中运行,但 unity 有它自己的函数,这些函数并不总是适用于标准 C#,所以这就是我更改它的方式。随意使用。
private void divideAmong() {
int[] numbers = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21};
int[] result = numbers.OrderBy(i => Random.Range(0,22)).ToArray();
}
注意:您需要确保您使用的是 System.Linq
【讨论】: