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