我想让代码变得简单:在英语上单词并使用单词的所有字符制作随机数组。对于激烈的,这个词:" qweasdzxc"应该代表:" adwseqzcx" (随机)。 所以代码是:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace randomLoop
{
class Program
{
static void Main(string[] args)
{
string s = "qweasdzxc";
string[] q = newArray(s);
for (int i = 1; i < s.Length - 1; i++)
{
Console.Write(q[i]);
}
}
public static char[] getArrayofstring(string s)
{
char[] c = s.ToCharArray();
return c;
}
public static Random rnd = new Random();
public static string[] charAndNumber(char c, int lengthOftheWord)//0-char 1-integer
{
string[] array = new string[2];
array[0] = c.ToString();
array[1] = (rnd.Next(lengthOftheWord)).ToString();
return array;
}
public static string[] newArray(string s)
{
string[] c = new string[s.Length];
int j = 1;
string[] q = charAndNumber(s[j], s.Length - 1);
for (int i = 1; i < c.Length - 1; i++)
{
c[i] = "";
}
int e = 1;
while (e.ToString() != q[1])
{
c[e] = q[0];
j++;//for the character s[j] see up
e++;//for the loop
}
return c;
}
}
}
答案 0 :(得分:0)
看起来你只是想要改变字符并生成一个新的字符串。你可以使用使用Fisher-Yates shuffle算法的方法(来自this回答,我根据你的情况对它进行了一些修改) :
public static void Shuffle<T>(this T[] source)
{
Random rng = new Random();
int n = source.Length;
while (n > 1) {
n--;
int k = rng.Next(n + 1);
T value = source[k];
source[k] = source[n];
source[n] = value;
}
}
然后使用它:
string s = "qweasdzxc";
char[] chars = s.ToCharArray();
chars.Shuffle();
string random = new string(chars);
另请注意,这是一种扩展方法,因此您需要将其放入 public 和 static 类。