用随机数计算数组中出现的次数,没有方法或 C# 中的列表

Posted

技术标签:

【中文标题】用随机数计算数组中出现的次数,没有方法或 C# 中的列表【英文标题】:Count the number of occurrences in an array with random numbers without methods or list in C# 【发布时间】:2020-12-07 14:12:46 【问题描述】:

我正在尝试用 C# 解决一个练习,如下所示:

编写一个程序,生成 20 个 0 到 9 之间的随机整数并显示每个数字的计数。 使用一个由十个整数组成的数组,比如 counts,来存储 0、1、...、9 的数量。)

这就是我想出的那种工作,但我对 0 一直数 1 的问题有疑问。

using System.Collections.Generic;
using System.Text;

namespace ArrayExercises

    class TaskFive
    
        public static void FindNumberCount()
        

            int c0=0,c1=02,c2=0,c3=0,c4=0,c5=0,c6=0,c7=0,c8=0,c9=0;
            int[] arr = new int[20];
            Random rand = new Random();
            Console.WriteLine("Numbers generated ");
            for (int i = 0; i < 19; i++)
            
                arr[i] = rand.Next(0, 10);
                Console.WriteLine(arr[i]);
            
            foreach(int number in arr)
            
                 if (number == 0)  c0++; 
            else if (number == 1)  c1++; 
            else if (number == 2)  c2++; 
            else if (number == 3)  c3++; 
            else if (number == 4)  c4++; 
            else if (number == 5)  c5++; 
            else if (number == 6)  c6++; 
            else if (number == 7)  c7++; 
            else if (number == 8)  c8++; 
            else if (number == 9)  c9++; 

            
            Console.WriteLine
            (
              $"Number of 0's: c0 \n" +
              $"Number of 1's: c1 \n" +
              $"Number of 2's: c2 \n" +
              $"Number of 3's: c3 \n" +
              $"Number of 4's: c4 \n" +
              $"Number of 5's: c5 \n" +
              $"Number of 6's: c6 \n" +
              $"Number of 7's: c7 \n" +
              $"Number of 8's: c8 \n" +
              $"Number of 9's: c9"
            );
        
    

提前致谢:)

【问题讨论】:

1.为什么c1=02? 2. 你的解决方案不是你被问到的:“使用一个由十个整数组成的数组,比如计数,来存储计数......” 那是一个错字。感谢您指出???? 【参考方案1】:

你可以这样缩短它

    public static void FindNumberCount()
    
        int[] count = new int[10];
        Random rand = new Random();
        int[] arr = new int[20];
        for (int i = 0; i < arr.Length; i++)
        
            arr[i] = rand.Next(0, 10);
            Console.WriteLine(arr[i]);
            count[arr[i]]++;
        
        for (int i = 0; i < count.Length; i++)
        
                Console.WriteLine($"Number of i's: count[i]");

        
       
    

如果你想画 20 个数字,你应该为 (int i = 0; i

【讨论】:

【参考方案2】:
int[] counts = new int[10];
int[] numbers = new int[20];


var random = new Random();
for (int i = 0; i < numbers.Length; i++)
        
    // Generate random numbers
    numbers[i] = random.Next(0, 9);
    // Increment the count of the generated number
    counts[numbers[i]]++;

【讨论】:

这对我来说很有意义。谢谢一百万?【参考方案3】:

你使用的 for 循环只循环了 19 次。 您必须将“i

【讨论】:

【参考方案4】:

问题出在这一行

for (int i = 0; i < 19; i++)

您用 20 个 int 初始化了一个数组,并且只将值设置为其中的 19 个。 如果您不将值 int 默认设置为零,因此您总是会得到一个额外的零 如下更改您的代码

 for (int i = 0; i <= 19; i++)

【讨论】:

感谢 Ansil,这向我展示了我的错误背后的逻辑。我在那里学到了一些东西?【参考方案5】:

第一个for循环的停止条件应该是i。那么你的程序应该可以工作了。

这就是我的解决方法:

 static void Main(string[] args)
 
     Random random = new Random();

     //Fill array with random numbers
     int[] array = new int[20];
     for (int i = 0; i < array.Length; i++)
         array[i] = random.Next(0, 10);

     //Count how many times a number occurs
     int[] numberCounts = new int[10];
     for (int i = 0; i < array.Length; i++)
         numberCounts[array[i]]++;

     //Print the count of the numbers
     for(int i = 0; i < numberCounts.Length; i++)
         Console.WriteLine("Number of " + i + "'s: " + numberCounts[i]);

     //Keep the console open
     Console.ReadLine();
 

【讨论】:

Henrik 非常详细。非常感谢?

以上是关于用随机数计算数组中出现的次数,没有方法或 C# 中的列表的主要内容,如果未能解决你的问题,请参考以下文章

C语言 统计数组每个元素个数

投掷100次掷子计算每个数出现的次数 C#源码案例 附第二种简单解法

在 C# 中,如何在数组中存储随机数等于某些总和的次数?

C#中怎样统计数组中一个一维数组中每个元素出现的次数?

数据结构与算法:数组

在 20 个整数的数组中搜索并计算单个随机数