首页
学习
活动
专区
圈层
工具
发布

Lucky程序
EN

Stack Overflow用户
提问于 2021-10-19 10:09:30
回答 1查看 37关注 0票数 0

我试着做一个幸运的dip程序,随机选择6个数字,1-59,然后打印成一个数组。我设法让它正常工作,但是您需要使用一个IndexOf方法,通过检查新数字是否已经在数组中,使相同的数字不会打印两次。

代码语言:javascript
复制
using System;


namespace LuckyDip
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] luckyNumbers = new int[6];
            Random random = new Random();

            for (int x = 0; x<6; x++)
            {
                 num[x] = random.Next(1,59);
                 Console.WriteLine(num[x]);
            }
            Console.ReadLine();
        } 
    }
}

它打印出数字,但有时它们是相同的。

EN

回答 1

Stack Overflow用户

发布于 2021-10-19 10:42:35

您声明要使用IndexOf,但该方法用于字符串(see docs)。您的示例有一个整型数组,因此下面的解决方案使用Contains。此解决方案会在循环中添加一个检查,如果数组中已存在此数字,则会生成一个新数字。如果您确实需要使用IndexOf,请创建一个字符串数组并使用String.valueOf(randomNumber)转换数字

代码语言:javascript
复制
using System;           
using System.Linq;

public class Program
{
     public static void Main(string[] args)
     {
         int[] luckyNumbers = new int[6];
         Random random = new Random();

         for (int x = 0; x<6; x++)
         {
             int randomNumber = random.Next(1,59);
             while (luckyNumbers.Contains(randomNumber))
             {
                randomNumber = random.Next(1,59);
             }
             luckyNumbers[x] = randomNumber;
             Console.WriteLine(luckyNumbers[x]);

         }
     } 
}

另一种可能的解决方案是:

代码语言:javascript
复制
using System;                   
using System.Collections;
using System.Linq;

public class Program
{
    public static void Main()
    {   
        int arraySize = 6;
        int[] luckyNumbers = Enumerable.Range(1,59).OrderBy(g => Guid.NewGuid()).Take(arraySize).ToArray();
    
        for (int x = 0; x < luckyNumbers.Length; x++)
        {
            Console.WriteLine(luckyNumbers[x]);
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69628943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档