Мне нужно создать словарь, который выражает отображение между каждым символом в алфавите и другим символом в этом алфавите, где ключ и значение являются уникальными - как очень простой шифр, который выражает, как кодировать / декодировать сообщение , Не может быть повторяющихся ключей или значений.
Кто-нибудь видит, что не так с этим кодом? Он по-прежнему производит дубликаты значений в отображении, несмотря на тот факт, что на каждой итерации пул доступных символов уменьшается для каждого уже используемого значения.
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
}
Спасибо.