我试着做一个幸运的dip程序,随机选择6个数字,1-59,然后打印成一个数组。我设法让它正常工作,但是您需要使用一个IndexOf方法,通过检查新数字是否已经在数组中,使相同的数字不会打印两次。
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();
}
}
}它打印出数字,但有时它们是相同的。
发布于 2021-10-19 10:42:35
您声明要使用IndexOf,但该方法用于字符串(see docs)。您的示例有一个整型数组,因此下面的解决方案使用Contains。此解决方案会在循环中添加一个检查,如果数组中已存在此数字,则会生成一个新数字。如果您确实需要使用IndexOf,请创建一个字符串数组并使用String.valueOf(randomNumber)转换数字
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]);
}
}
}另一种可能的解决方案是:
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]);
}
}
}https://stackoverflow.com/questions/69628943
复制相似问题