Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 随机化字符串_C#_String_Random - Fatal编程技术网

C# 随机化字符串

C# 随机化字符串,c#,string,random,C#,String,Random,我是C#的新手,所以不要因为我的愚蠢而责备我。 我正在开发一个应用程序,它应该随机分配一个单词并给出它的长度,例如,你写一个单词“Line”,它会给你“iLen”。 目前我确信只有这一部分有效: private void lenght_Click(object sender, EventArgs e) { String word = textBox1.Text; int x = word.Length; MessageBox.Sho

我是C#的新手,所以不要因为我的愚蠢而责备我。 我正在开发一个应用程序,它应该随机分配一个单词并给出它的长度,例如,你写一个单词“Line”,它会给你“iLen”。 目前我确信只有这一部分有效:

    private void lenght_Click(object sender, EventArgs e)
    {
        String word = textBox1.Text;
        int x = word.Length;
        MessageBox.Show(x.ToString());
    }

    private void randomize_Click(object sender, EventArgs e)
    {
        String word = textBox1.Text;
        int x = word.Length;


    }
我试了很多次,但大部分都是应用程序崩溃了,所以现在我 想知道Text.ToCharArray是做什么的,我希望得到更多的支持。 所以我只需要一个方法,让你的字符串随机化,它会给你另一个字符串,只需要混合/随机化字符。 现在我将把这个问题留5-7个小时,以便以后得到更多的答案。我将对所有问题进行回顾,并对工作中的问题进行讨论。谢谢大家的支持!
我已经阅读了你所有的评论,但我迟到了,很抱歉,现在是时候检查所有内容了。

随机化
方法(从):


到目前为止,您已经了解了如何在消息框中显示字符串的长度。你试着把这个词随机化了吗?您是否查看了文档以了解ToCharray的功能?你对这个问题做过什么研究吗?我是C#的新手,所以不要责怪noob。我们从来没有这样做过!您可以使用与列表相同的算法。将字符串转换为字符列表,运行shuffle,然后将结果转换回字符串。您可以从这段代码中创建一个很好的扩展方法。对于大型列表,这将非常低效,因为
RemoveAt
是一个O(n)操作。如果数组的大小适中,则生成的O(n^2)算法将花费很长时间。您最好只创建一个
列表
,然后使用@JimMischel更新我的答案。现在应该更好了。这是可行的,但是你可以不用第二张单子。只需就地修改原始列表(交换项)并将其返回。@JimMischel要添加到Jim的注释中,如果不想修改原始列表,请将其复制一次到新数组中。按原样,将数组复制到列表中,然后将该列表复制到另一个列表中,然后将该列表复制到新数组中。另请注意,如果要将输入复制到数组中,最好将其作为
IEnumerable
接受,以使调用方更轻松。只需要一份,不需要三份。还请注意,这一术语的正确含义是“随机”而不是“随机”。
public static T[] Randomize<T>(T[] source)
{
    List<T> randomized = new List<T>();
    List<T> original = new List<T>(source);
    Random r = new Random();
    for (int size = original.Count; size > 0; size--)
    {
        int index = r.Next(size);
        randomized.Add(original[index]);
        original[index] = original[size - 1];
    }
    return randomized.ToArray();
}
string text = "Line";

string randomized = new string(Randomize(text.ToCharArray()));
Random rand = new Random();
var output = new string(input.OrderBy(x => rand.Next()).ToArray());