Выберите случайный char
У меня есть несколько символов:
chars = "$%#@!*abcdefghijklmnopqrstuvwxyz1234567890?;:ABCDEFGHIJKLMNOPQRSTUVWXYZ^&".ToCharArray();
теперь я ищу способ вернуть случайный char из них.
Я нашел код, который может быть полезен:
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;
}
этот код возвращает мне случайную char форму алфавита, но возвращает только строчные буквы
Ответы
Ответ 1
Ну, вы почти готовы - вы хотите вернуть случайный элемент из строки, поэтому вы просто генерируете случайное число в диапазоне длины строки:
public static char GetRandomCharacter(string text, Random rng)
{
int index = rng.Next(text.Length);
return text[index];
}
Я бы посоветовал использовать переменную static
типа Random
без какой-либо блокировки, кстати - Random
не является потокобезопасным. Более подробную информацию (и обходные пути) см. В статье по случайным номерам.
Ответ 2
Это может сработать для вас:
public static char GetLetter()
{
string chars = "$%#@!*abcdefghijklmnopqrstuvwxyz1234567890?;:ABCDEFGHIJKLMNOPQRSTUVWXYZ^&";
Random rand = new Random();
int num = rand.Next(0, chars.Length -1);
return chars[num];
}
Ответ 3
Вы можете использовать его как:
char[] chars = "$%#@!*abcdefghijklmnopqrstuvwxyz1234567890?;:ABCDEFGHIJKLMNOPQRSTUVWXYZ^&".ToCharArray();
Random r = new Random();
int i = r.Next(chars.Length);
Console.WriteLine(chars[i]);
Вот DEMO
.
Ответ 4
Вместо 26 используйте размер своего буфера CHARS.
int num = random.Next(0, chars.Length)
Тогда вместо
let = (char)('a' + num)
использование
let = chars[num]
Ответ 5
У меня была приблизительная проблема, и я сделал это следующим образом:
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);
}
Ответ 6
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();
}
Ответ 7
Я хочу Этот код поможет вам:
string s = "$%#@!*abcdefghijklmnopqrstuvwxyz1234567890?;:ABCDEFGHIJKLMNOPQRSTUVWXYZ^&";
Random random = new Random();
int num = random.Next(0, s.Length -1);
MessageBox.Show(s[num].ToString());
Ответ 8
Получение символа из ASCII-номера:
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;
}
Ответ 9
Я не уверен, насколько это эффективно, поскольку я очень плохо знаком с кодированием, однако, почему бы просто не использовать случайное число, которое вы уже создали? Разве это не "рандомизирует" и заглавные буквы?
int num = random.Next(0,26);
char let = (num > 13) ? Char.ToUpper((char)('a' + num)) : (char)('a' + num);
Кроме того, если вы хотите взять одну букву из вашего символа [], будет проще использовать строку?
string charRepo = "$%#@!*abcdefghijklmnopqrstuvwxyz1234567890?;:ABCDEFGHIJKLMNOPQRSTUVWXYZ^&";
Random rando = new Random();
int ranNum = rando.Next(0, charRepo.Length);
char ranChar = charRepo[ranNum];
Ответ 10
Вы можете попробовать следующее:
public static string GetPassword()
{
string Characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
Random rnd = new Random();
int index = rnd.Next(0,51);
string char1 = Characters[index].ToString();
return char1;
}
Теперь вы можете играть с этим блоком кода согласно вашему желанию. Ура!
Ответ 11
Ваш код в порядке, вам просто нужно изменить "а" на "А"
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;
}
Этот код такой же, как упоминалось в вопросе, просто измените char let = (char)('A' + num);
, он возвращает заглавные буквы.
Спасибо!!!