Мне нужно создать словарь, который выражает сопоставление между каждым символом в алфавите и другим символом в этом алфавите, где и ключ, и значение уникальны - как очень простой шифр, который выражает, как кодировать/декодировать сообщение. Не может быть повторяющихся ключей или значений.
Кто-нибудь видит, что не так с этим кодом? Он по-прежнему создает повторяющиеся значения в отображении, несмотря на то, что на каждой итерации пул доступных символов уменьшается для каждого уже использованного значения.
string source_alphabet = _alphabet; //ie "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
string target_alphabet = _alphabet;
Dictionary<char, char> _map = new Dictionary<char, char>();
for (int i = 0; i < source_alphabet.Length; i++)
{
int random = _random.Next(target_alphabet.Length - 1); //select a random index
char _output = target_alphabet[random] //get the char at the random index
_map.Add(source_alphabet[i], _output); //add to the dictionary
target_alphabet = target_alphabet.Replace(_output.ToString(), string.Empty);
// remove the char we just added from the remaining alphabet
}
Спасибо.
random
всегда отличается отi
, поэтому дубликаты могут (и обычно будут) происходить... - person Yahia   schedule 14.09.2011