2013-04-04 56 views
-1

在我的一个应用程序中,我想混洗字符串内容,并在另一个应用程序中,如果我将这个混洗字符串作为输入传递,那么该应用程序必须返回原始字符串value.Is有任何方法可用在dotnet平台中做到这一点?c#中的字符混排和重新排列#

+0

你怎么做一些事情像费雪耶茨洗牌? – KF2 2013-04-04 08:38:56

+0

你已经完成的代码在哪里? – Freelancer 2013-04-04 08:39:26

+0

通过“申请”,你的意思是“宁静的服务”? – nurettin 2013-04-04 08:39:28

回答

2

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

它是一种算法,用于随机排列集合,生成有限的集合的随机置换。

用于产生数字1-N变作为一个随机置换给定的基本方法如下:

  1. 从1写下号码N.
  2. 选择一个之间的一个随机数k以及剩余(未包括)的未用数字 的数量。
  3. 从低端算起,排除第k个号码还没有击中 ,并在其他地方写下来。
  4. 重复步骤2直到所有数字都被删除。
  5. 在步骤3中写下的数字序列现在是原始数字的随机排列 。

有一个例子:shuffle algorithm

和良好的一个here

+0

好的...它工作正常.. – 2013-04-04 08:48:08

+0

@ Praveen库马尔:接受作为答案,如果它是helfull:D – KF2 2013-04-04 08:49:29

1

绝对不是开箱即用,但自己创建struct

struct ShuffleChar{ 
    char c; 
    int index; 
} 

,当你洗你的信,分配给每个字母的index所以你可以把它们放在一起再次。请记住,string只有在字母顺序正确时才有意义,如果更改该顺序将破坏该信息,并且很可能无法恢复该信息...

+0

好..那么如何重新安排呢? – 2013-04-04 08:41:59

+0

就像我在回答中告诉过你的那样,尽量保存信息。你不能重新创建原始的字符串,而不保留任何有关其来源的信息 – 2013-04-04 08:45:32