首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >c#中的随机名生成器

c#中的随机名生成器
EN

Stack Overflow用户
提问于 2013-02-04 13:20:28
回答 8查看 74.9K关注 0票数 4

我有一个女性和男性的名字列表,然后是数组中的姓氏列表。

我想要做的是使用随机生成器在这些数组中获取这些名称,并根据我所调用的名称输出一个随机的名字和姓氏。

在完成之后,我将在其他类中引用该方法,而不是每次单独写出它。

下面是我到目前为止掌握的代码:

代码语言:javascript
运行
复制
  private void RandName()
  {
        string[] maleNames = new string[1000] { "aaron", "abdul", "abe", "abel", "abraham", "adam", "adan", "adolfo", "adolph", "adrian"};
        string[] femaleNames = new string[1000] { "abby", "abigail", "adele", "adrian"};
        string[] lastNames = new string[1000] { "abbott", "acosta", "adams", "adkins", "aguilar"};

        Random rand = new Random(DateTime.Now.Second);
        if (rand.Next(1, 2) == 1)
        {
            FirstName = maleNames[rand.Next(0, maleNames.Length - 1)];
        }
        else
        {
            FirstName = femaleNames[rand.Next(0, femaleNames.Length - 1)];
        }

  }

,我的问题是:如何使用我创建的名称数组创建一个随机名称生成器?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2013-02-04 13:29:33

我想你的随机发生器每次结果都是一样的。

如果这是您的问题,则不应该每次都创建局部变量rand。相反,创建字段。

小象:

代码语言:javascript
运行
复制
private static Random rand = new Random(DateTime.Now.Second);

private void RandName()
{
   ...
}
票数 8
EN

Stack Overflow用户

发布于 2018-04-19 13:37:42

代码语言:javascript
运行
复制
    public static string GenerateName(int len)
    { 
        Random r = new Random();
        string[] consonants = { "b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "l", "n", "p", "q", "r", "s", "sh", "zh", "t", "v", "w", "x" };
        string[] vowels = { "a", "e", "i", "o", "u", "ae", "y" };
        string Name = "";
        Name += consonants[r.Next(consonants.Length)].ToUpper();
        Name += vowels[r.Next(vowels.Length)];
        int b = 2; //b tells how many times a new letter has been added. It's 2 right now because the first two letters are already in the name.
        while (b < len)
        {
            Name += consonants[r.Next(consonants.Length)];
            b++;
            Name += vowels[r.Next(vowels.Length)];
            b++;
        }

        return Name;


     }
票数 18
EN

Stack Overflow用户

发布于 2013-02-04 13:26:14

好的,在不知道您面临的问题的情况下,这是一种暗地里的尝试,但我认为您的问题是,您已经将数组大小声明为1000,但在每个数组中只输入了大约10个值。因此,您的数组只满了1%,所以您将获得大部分的空名称。

尝试以下几点:

代码语言:javascript
运行
复制
// Note I have not specified the array size.
string[] maleNames   = {"aaron", "abdul", "abe", "abel", "abraham", "adam", "adan", "adolfo", "adolph", "adrian"};
string[] femaleNames = {"abby", "abigail", "adele", "adrian"};
string[] lastNames   = {"abbott", "acosta", "adams", "adkins", "aguilar"};
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14687658

复制
相关文章

相似问题

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