/// <summary> /// Gets a pseudorandom <see langword="char"/>. /// </summary> /// <param name="charKind">Types of the character.</param> /// <returns>A random char value.</returns> public char NextChar(RandomCharKind charKind) { const string LettersUpper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; const string LettersLower = "abcdefghijklmnopqrstuvwxyz"; const string Digits = "0123456789"; const string Symbols = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~"; Span <RandomCharKind> flags = stackalloc RandomCharKind[4]; int flagCount = 0; if (HasFlag(charKind, RandomCharKind.Digit)) { flags[flagCount++] = RandomCharKind.Digit; } if (HasFlag(charKind, RandomCharKind.Upper)) { flags[flagCount++] = RandomCharKind.Upper; } if (HasFlag(charKind, RandomCharKind.Lower)) { flags[flagCount++] = RandomCharKind.Lower; } if (HasFlag(charKind, RandomCharKind.Symbol)) { flags[flagCount++] = RandomCharKind.Symbol; } RandomCharKind flag = flags[NextInt(0, flagCount - 1)]; return(flag switch { RandomCharKind.Upper => LettersUpper[NextInt(0, LettersUpper.Length - 1)], RandomCharKind.Lower => LettersLower[NextInt(0, LettersLower.Length - 1)], RandomCharKind.Digit => Digits[NextInt(0, Digits.Length - 1)], RandomCharKind.Symbol => Symbols[NextInt(0, Symbols.Length - 1)], _ => default,
public char NextChar(RandomCharKind randomChar) { return(default);