c#中的字符改组和重新排列

时间:2013-04-04 08:36:32

标签: c# .net c#-4.0 c#-3.0

在我的一个应用程序中,我想要将字符串内容和其他应用程序混合,如果我将这个随机字符串作为输入传递,那么该应用程序必须返回原始字符串值。是否有任何方法可以在dotnet平台中执行此操作?

2 个答案:

答案 0 :(得分:2)

您可以使用Fisher–Yates shuffle算法。

  

它是一种用于生成有限的随机排列的算法   set-in plain terms,用于随机洗牌。

用于生成数字1-N的随机排列的基本方法如下:

  1. 记下从1到N的数字。
  2. 在一个和未打击的数量之间选择一个随机数k 剩余的数字(包括在内)。
  3. 从低端计数,击出尚未击中的第k个数字 out,并把它写下来。
  4. 从步骤2开始重复,直到所有数字都被删除。
  5. 在步骤3中记下的数字序列现在是随机的 原始数字的排列。
  6. 有一个例子:shuffle algorithm

    好的here

答案 1 :(得分:1)

绝对不是开箱即用,而是创建一个struct

struct ShuffleChar{
    char c;
    int index;
}

当你洗牌时,给每个字母分配一个index,这样你就可以把它们放在一起了。请记住,string只有在字母顺序正确的情况下才有意义,更改该顺序会破坏该信息,并且很有可能无法恢复它......