【问题标题】:Splitting A Set Of Numbers Among Arrays在数组中拆分一组数字
【发布时间】:2017-06-05 17:52:38
【问题描述】:

我正在创建一个游戏,我需要在 7 名玩家之间划分数字 1-21 以划分他们之间的 21 张牌,因此每个玩家得到 3 张牌。我需要它是随机的,所以我尝试创建一个函数,对于每个数字,它会将其添加到 7 个数组中的一个随机数组中,如果它尝试添加的数组已经有三个数字(或者在这个案例卡)然后它将该号码提供给另一张卡。提前谢谢你,大卫。

【问题讨论】:

  • 那么当你写那个函数的时候发生了什么?

标签: c# arrays unity3d


【解决方案1】:

这将为您提供一个 List<int>,其中包含 21 个随机打乱的数字。

var numbers =  Enumerable.Range(1, 21);
var random = new Random();
var result = numbers.OrderBy(i => random.Next()).ToList();

现在,您可以为第一个玩家分配前三个号码,第二个分配下三个号码,依此类推。

【讨论】:

  • 谢谢,这很好用。我必须进行一些编辑才能统一工作,主要是“数字”和“结果”是整数,“随机”是变量类型随机。另外,我必须使用 System.Linq,这不是 Unity 的默认设置,但效果很好(如果这从一开始就很明显,对不起,我还是 C# 新手)。谢谢!
【解决方案2】:

好的,使用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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    相关资源
    最近更新 更多