2013-04-04 41 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