好吧,标题可能有点误导,但我实在想不出更好的解释来解决我的问题。我正在尝试创建一个程序,它接受一个名字数组和一个姓氏数组,并将它们放在一个全名数组中。这里的问题是我试图确保同一个名字不会出现两次,这样如果 firstname[randomindex] 和 lastname[randomindex] 的组合已经在全名数组中,它将重新滚动随机数用于索引,直到找到未使用的组合。到目前为止,我还停留在这个问题上:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _100randompersons
{
class Fyldefylde
{
private string[] firstnames;
private string[] lastnames;
private string[] fullnames;
private Random random;
public Fyldefylde()
{
firstnames = new string[10] { "Kim", "Allan", "Frank", "Lone", "Line", "Anne", "Per", "Bo", "Grethe", "Mette" };
lastnames = new string[10] { "Pedersen", "Nielsen", "Hansen", "Larsen", "Nygaard", "Harboe", "Bendix", "Højris", "Pilgaard", "Nyager" };
fullnames = new string[100];
random = new Random();
}
public string[] getFirstNames()
{
return firstnames;
}
public string[] getLastNames()
{
return lastnames;
}
public string[] getFullNames()
{
return fullnames;
}
public int getRandomIndex(int min, int max)
{
int randomnumber = random.Next(min, max);
return randomnumber;
}
public void fillFullNames()
{
for(int i = 0; i < fullnames.Length; i++)
{
getRandomIndex(0, 10);
while(fullnames.Contains(firstnames[getRandomIndex(0,10)] + " " + lastnames[getRandomIndex(0,10)]))
{
fullnames[i] = firstnames[getRandomIndex(0, 10)] + " " + lastnames[getRandomIndex(0, 10)];
}
}
}
}
}
提前致谢! :)
最佳答案
看起来您只想制作全名的所有组合,那么为什么不这样做呢?
for (int i = 0; i < firstnames.Length; i++)
{
for (int j = 0; j < lastnames.Length; j++)
{
fullnames[i*lastnames.Length + j] = firstnames[i] + " " + lastnames[j];
}
}
然后,如果您希望您的名字以随机顺序排列,请运行一个随机化名字顺序的方法
如果你想要随机顺序的名字,那么你总是可以做类似下面的事情
string[] firstnames = new string[10] { "Kim", "Allan", "Frank", "Lone", "Line", "Anne", "Per", "Bo", "Grethe", "Mette" };
string[] lastnames = new string[10] { "Pedersen", "Nielsen", "Hansen", "Larsen", "Nygaard", "Harboe", "Bendix", "Højris", "Pilgaard", "Nyager" };
string[] fullnames = new string[100];
List<int> indices = new List<int>();
for (int i = 0; i < firstnames.Length * lastnames.Length; i++)
{
indices.Add(i);
}
Random random = new Random();
for (int i = 0; i < firstnames.Length; i++)
{
for (int j = 0; j < lastnames.Length; j++)
{
int randomIndex = random.Next(indices.Count() - 1);
fullnames[indices[randomIndex]] = firstnames[i] + " " + lastnames[j];
indices.RemoveAt(randomIndex);
}
}
关于c# - 如何让我的程序生成一个新的随机数,直到它找到一个以前没有使用过的随机数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41740126/