我想在 C# 的函数中打印一个随机数组(如果它不在函数中也可以)。我能怎么做? [关闭]

Posted

技术标签:

【中文标题】我想在 C# 的函数中打印一个随机数组(如果它不在函数中也可以)。我能怎么做? [关闭]【英文标题】:I want to print a random array in a function (It is also ok if it is not in function) in C#. How can I do? [closed] 【发布时间】:2021-03-19 05:54:15 【问题描述】:

静态空数组()

            //1dimensional
            string[] a = new string[4];
            string[] one_one =  "X" ;
            string[] one_two =  "X", "X" ;
            string[] one_three =  "X", "X", "X" ;
            ////2dimensional
            string[,] one_four =   "X", "X" ,  "X", "X"  ;
            string[,] two_two =   "X" ,  "X"  ;
            string[,] two_three =   "X" ,  "X" ,  "X"  ;
            
            
        

在那里我想使用随机命令打印随机数组。 我是使用函数的新手,所以我没有太多想法 如果没有“功能”也可以解决它,如果您能提供帮助,我会很高兴,谢谢

【问题讨论】:

解释你打算如何使用“随机数组”。我们是否在选择中混合了一维和二维数组。给我们一个你可能期望的“输出”的例子...... 您的意思是要随机选择代码中显示的数组之一,并打印其内容?或者你的意思是你想生成一个内容是随机的数组?目前还不清楚。也不清楚你被困在哪里。你知道如何在 C# 中生成随机数吗(如果不知道,google 一下很容易)? 对不起,我是新来的。是的,我想混合一维和二维数组,我的示例输出类似于 XX 这没有回答我提出的问题。 是的,我知道如何生成随机数,我想随机选择代码中显示的数组之一,并打印其内容 【参考方案1】:

如果我们只处理一维数组,那么您可以制作一个数组数组供您选择,然后使用String.Join() 制作您的输出字符串:

Random R = new Random();
string[][] arrays = a, one_one, one_two, one_three ;
var arr = arrays[R.Next(arrays.Length)];
String output = String.Join("", arr);
Console.WriteLine(output);

你可以只用二维数组做类似的事情,但你需要一个循环将“行”放在一个字符串中。

将 1D 和 2D 混合到一个选择中会使它变得更加棘手。这是可能的(见下文),但我确实建议这样做,因为这是一个糟糕的设计:

static void Main(string[] args)

    // One-dimensional
    string[] a = new string[4];
    string[] one_one =  "X" ;
    string[] one_two =  "X", "X" ;
    string[] one_three =  "X", "X", "X" ;

    // Two-dimensional
    string[,] one_four =   "X", "X" ,  "X", "X"  ;
    string[,] two_two =   "X" ,  "X"  ;
    string[,] two_three =   "X" ,  "X" ,  "X"  ;

    Random R = new Random();
    Object[] arrays = a, one_one, one_two, one_three, one_four, two_two, two_three ;
    var arr = arrays[R.Next(arrays.Length)];

    string output = "";
    switch (((Array)arr).Rank) 
        case 1:
            output = String.Join("", (String[])arr);
            break;

        case 2:
            string[,] arr2D = (string[,])arr;
            for(int r=0; r<=arr2D.GetUpperBound(0); r++)
            
                for (int c = 0; c<=arr2D.GetUpperBound(1); c++)
                
                    output = output + arr2D[r, c];
                
                if (r<arr2D.GetUpperBound(0))
                
                    output = output + Environment.NewLine;
                       
            
            break;
    
    Console.WriteLine(output);

    Console.Write("Press Enter to Quit");
    Console.ReadLine();

【讨论】:

我也不想混合 1d 和 2d,但我必须做一个俄罗斯方块风格的项目,我想不出还有什么,谢谢。 @Idle_Mind

以上是关于我想在 C# 的函数中打印一个随机数组(如果它不在函数中也可以)。我能怎么做? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

减少数组中的最后一个字符串元素而不在C#中删除它?

从 C# 代码访问报告

如何将矩阵传递给打印它的函数?

随机选择一个数组 C# [关闭]

生成 20 个随机数并在数组中搜索一个数字的程序

C#将具有随机空格的字符串拆分为字符串数组[关闭]