Pick random char
我有一些字符:
1 | chars ="$%#@!*abcdefghijklmnopqrstuvwxyz1234567890?;:ABCDEFGHIJKLMNOPQRSTUVWXYZ^&".ToCharArray(); |
现在我正在寻找一个方法来从这些文件中返回随机字符。
我找到了一个可能有用的代码:
1 2 3 4 5 6 7 8 9 | static Random random = new Random(); public static char GetLetter() { // This method returns a random lowercase letter // ... Between 'a' and 'z' inclusize. int num = random.Next(0, 26); // Zero to 25 char let = (char)('a' + num); return let; } |
此代码返回字母表中的随机字符,但只返回小写字母
你就快到了-你想从一个字符串中返回一个随机元素,所以你只需要在字符串长度的范围内生成一个随机数:
1 2 3 4 5 | public static char GetRandomCharacter(string text, Random rng) { int index = rng.Next(text.Length); return text[index]; } |
我建议不要在没有任何锁定的情况下使用
这可能对您有用:
1 2 3 4 5 6 7 | public static char GetLetter() { string chars ="$%#@!*abcdefghijklmnopqrstuvwxyz1234567890?;:ABCDEFGHIJKLMNOPQRSTUVWXYZ^&"; Random rand = new Random(); int num = rand.Next(0, chars.Length -1); return chars[num]; } |
你可以像这样使用它;
1 2 3 4 | char[] chars ="$%#@!*abcdefghijklmnopqrstuvwxyz1234567890?;:ABCDEFGHIJKLMNOPQRSTUVWXYZ^&".ToCharArray(); Random r = new Random(); int i = r.Next(chars.Length); Console.WriteLine(chars[i]); |
这是一个
我有一个大概的问题,我是这样做的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public static String GetRandomString() { var allowedChars ="abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ0123456789"; var length = 15; var chars = new char[length]; var rd = new Random(); for (var i = 0; i < length; i++) { chars[i] = allowedChars[rd.Next(0, allowedChars.Length)]; } return new String(chars); } |
请使用字符缓冲区的大小而不是26。
1 | int num = random.Next(0, chars.Length) |
然后代替
1 | let = (char)('a' + num) |
使用
1 | let = chars[num] |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | private static void Main(string[] args) { Console.WriteLine(GetLetters(6)); Console.ReadLine(); } public static string GetLetters(int numberOfCharsToGenerate) { var random = new Random(); char[] chars ="$%#@!*abcdefghijklmnopqrstuvwxyz1234567890?;:ABCDEFGHIJKLMNOPQRSTUVWXYZ^&".ToCharArray(); var sb = new StringBuilder(); for (int i = 0; i < numberOfCharsToGenerate; i++) { int num = random.Next(0, chars.Length); sb.Append(chars[num]); } return sb.ToString(); } |
我不知道它有多有效,因为我对编码很陌生,但是,为什么不利用你已经创建的随机数呢?这个"随机化"不是也可以是一个大写字符吗?
1 2 | int num = random.Next(0,26); char let = (num > 13) ? Char.ToUpper((char)('a' + num)) : (char)('a' + num); |
另外,如果您想从字符[]中提取一个字母,那么只使用字符串会更容易吗?
1 2 3 4 5 | string charRepo ="$%#@!*abcdefghijklmnopqrstuvwxyz1234567890?;:ABCDEFGHIJKLMNOPQRSTUVWXYZ^&"; Random rando = new Random(); int ranNum = rando.Next(0, charRepo.Length); char ranChar = charRepo[ranNum]; |
从ASCII号码获取字符:
1 2 3 4 5 6 7 | private string GenerateRandomString() { Random rnd = new Random(); string txtRand = string.Empty; for (int i = 0; i <8; i++) txtRand += ((char)rnd.Next(97, 122)).ToString(); return txtRand; } |
我希望此代码能帮助您:
1 2 3 4 | string s ="$%#@!*abcdefghijklmnopqrstuvwxyz1234567890?;:ABCDEFGHIJKLMNOPQRSTUVWXYZ^&"; Random random = new Random(); int num = random.Next(0, s.Length -1); MessageBox.Show(s[num].ToString()); |
您可以尝试以下操作:
1 2 3 4 5 6 7 8 | public static string GetPassword() { string Characters ="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; Random rnd = new Random(); int index = rnd.Next(0,51); string char1 = Characters[index].ToString(); return char1; } |
现在,您可以根据自己的意愿使用此代码块。干杯!