c#随机生成英文名
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#随机生成英文名,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2498字,纯文字阅读大概需要4分钟。
内容图文
![c#随机生成英文名](/upload/InfoBanner/zyjiaocheng/856/3f46e04c50cd4ff0beecbcb06b89c38e.jpg)
private static string GenerateSurname()
{
???? string name = string .Empty;
???? string [] currentConsonant;
???? string [] vowels = "a,a,a,a,a,e,e,e,e,e,e,e,e,e,e,e,i,i,i,o,o,o,u,y,ee,ee,ea,ea,ey,eau,eigh,oa,oo,ou,ough,ay" .Split( ',' );
???? string [] commonConsonants = "s,s,s,s,t,t,t,t,t,n,n,r,l,d,sm,sl,sh,sh,th,th,th" .Split( ',' );
???? string [] averageConsonants = "sh,sh,st,st,b,c,f,g,h,k,l,m,p,p,ph,wh" .Split( ',' );
???? string [] middleConsonants = "x,ss,ss,ch,ch,ck,ck,dd,kn,rt,gh,mm,nd,nd,nn,pp,ps,tt,ff,rr,rk,mp,ll" .Split( ',' ); //Can't start
???? string [] rareConsonants = "j,j,j,v,v,w,w,w,z,qu,qu" .Split( ',' );
???? Random rng = new Random(Guid.NewGuid().GetHashCode()); //http://codebetter.com/blogs/59496.aspx
???? int [] lengthArray = new int [] { 2, 2, 2, 2, 2, 2, 3, 3, 3, 4 }; //Favor shorter names but allow longer ones
???? int length = lengthArray[rng.Next(lengthArray.Length)];
???? for ( int i = 0; i < length; i++)
???? {
???????? int letterType = rng.Next(1000);
???????? if (letterType < 775) currentConsonant = commonConsonants;
???????? else if (letterType < 875 && i > 0) currentConsonant = middleConsonants;
???????? else if (letterType < 985) currentConsonant = averageConsonants;
???????? else currentConsonant = rareConsonants;
???????? name += currentConsonant[rng.Next(currentConsonant.Length)];
???????? name += vowels[rng.Next(vowels.Length)];
???????? if (name.Length > 4 && rng.Next(1000) < 800) break ; //Getting long, must roll to save
???????? if (name.Length > 6 && rng.Next(1000) < 950) break ; //Really long, roll again to save
???????? if (name.Length > 7) break ; //Probably ridiculous, stop building and add ending
???? }
???? int endingType = rng.Next(1000);
???? if (name.Length > 6)
???????? endingType -= (name.Length * 25); //Don't add long endings if already long
???? else
???????? endingType += (name.Length * 10); //Favor long endings if short
???? if (endingType < 400) { } // Ends with vowel
???? else if (endingType < 775) name += commonConsonants[rng.Next(commonConsonants.Length)];
???? else if (endingType < 825) name += averageConsonants[rng.Next(averageConsonants.Length)];
???? else if (endingType < 840) name += "ski" ;
???? else if (endingType < 860) name += "son" ;
???? else if (Regex.IsMatch(name, "(.+)(ay|e|ee|ea|oo)$" ) || name.Length < 5)
???? {
???????? name = "Mc" + name.Substring(0, 1).ToUpper() + name.Substring(1);
???????? return name;
???? }
???? else name += "ez" ;
???? name = name.Substring(0, 1).ToUpper() + name.Substring(1); //Capitalize first letter
???? return name;
}
|
内容总结
以上是互联网集市为您收集整理的c#随机生成英文名全部内容,希望文章能够帮你解决c#随机生成英文名所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。