C# 如何获得带空格和混合大小写的随机字符串?

C# 如何获得带空格和混合大小写的随机字符串?,c#,string,random,mixed-case,C#,String,Random,Mixed Case,我需要生成一个带有空格和mixedCase的随机字符串 到目前为止,我只知道: /// <summary> /// The Typing monkey generates random strings - can't be static 'cause it's a monkey. /// </summary> /// <remarks> /// If you wait long enough it will eventu

我需要生成一个带有空格和mixedCase的随机字符串

到目前为止,我只知道:

    /// <summary>
    /// The Typing monkey generates random strings - can't be static 'cause it's a monkey.
    /// </summary>
    /// <remarks>
    /// If you wait long enough it will eventually produce Shakespeare.
    /// </remarks>
    class TypingMonkey
    {
        /// <summary>
        /// The Typing Monkey Generates a random string with the given length.
        /// </summary>
        /// <param name="size">Size of the string</param>
        /// <returns>Random string</returns>
        public string TypeAway(int size)
        {
            StringBuilder builder = new StringBuilder();
            Random random = new Random();
            char ch;

            for (int i = 0; i < size; i++)
            {
                ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65)));
                builder.Append(ch);
            }

            return builder.ToString();
        }
    }
//
///键入monkey会生成随机字符串-不能是静态的,因为它是一个monkey。
/// 
/// 
///如果你等的时间足够长,它最终会产生莎士比亚。
/// 
打字猴
{
/// 
///键入猴子生成一个给定长度的随机字符串。
/// 
///字符串的大小
///随机字符串
公共字符串TypeAway(整数大小)
{
StringBuilder=新的StringBuilder();
随机=新随机();
char ch;
对于(int i=0;i
我得到的是没有空格的大写字符串——我相信这个调整应该是非常严格的,以便在汤中混合大小写和空格


非常感谢您的帮助

最简单的方法是创建一个包含以下值的字符串:

private readonly string legalCharacters = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
然后使用RNG访问此字符串中的随机元素:

public string TypeAway(int size)
{
    StringBuilder builder = new StringBuilder();
    Random random = new Random();
    char ch;

    for (int i = 0; i < size; i++)
    {
        ch = legalCharacters[random.Next(0, legalCharacters.Length)];
        builder.Append(ch);
    }

    return builder.ToString();
}
publicstringtypeaway(int-size)
{
StringBuilder=新的StringBuilder();
随机=新随机();
char ch;
对于(int i=0;i
您可以从允许的所有字符数组开始

private static readonly char[] ALLOWED = new [] { 'a', 'b', 'c' ... '9' };
然后:

{
    ...
    for (int i = 0; i < size; i++)
    {
        ch = ALLOWED[random.NextInt(0, ALLOWED.Length)];
        builder.Append(ch);
    }

    ...

    return builder.ToString();
}

return builder.ToString();
{
...
对于(int i=0;i
当然,我要解释一下。我不确定random.NextInt()的语法,但IntelisSense对此没有帮助。

您也可以使用。在平面设计行业中,它广泛用于填充随机、真实的文本,而不会分散用户对设计元素的注意力

您可以将Lorem Ipsum的一大块复制并粘贴到代码中的一个常量字符串中,然后将其子串成所需的大小

我发现这比完全随机的文本要好,因为它太分散注意力了


希望这能有所帮助。

您的示例所做的与我所做的完全相同,因为它选择了一个介于65和90(包括65和90)之间的Unicode字符值。如果您想让它更“随机”(以您喜欢的方式定义),您将需要一个比.NET提供的“更好”的PRNG。我会尝试一下并让您知道-无论如何我都喜欢它,谢谢!没有什么比随机两次更随机的了。如果希望字符串中的每个字符都以相同的概率出现,这是一个很好的选择。(但您需要将空格字符添加到legalCharacters中,您将获得两个概率为1/2809的连续空格)。空格字符是第一个元素。它的工作方式与charme类似-我需要它生成一组随机字符串,通过遗传算法进化为目标字符串。谢谢,但我需要它生成一组随机字符串,通过遗传算法进化为目标字符串