Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
0 / 0 / 4
Регистрация: 18.04.2013
Сообщений: 45
1
.NET 4.x

Dictionary как записать 1000000 значений?

12.12.2013, 10:21. Показов 1473. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. У меня такая проблема, у меня есть массив из 1000000 рандомных значений и нужно найти совпадения в этом массиве. Я написал функцию которая считает количество совпадений. Но проблема в том, что в Dictionary входит только 65337 записей. Как мне увеличить этот диапазон? Или какой другой аналогичный способ использовать?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 static Dictionary<int,int> By_Dictionary(int[] array)
        {
            Dictionary<int, int> dictionary = new Dictionary<int, int>(array.Length);
            foreach (int element in array)
            {
                int repeat_count;
                if (dictionary.TryGetValue(element, out repeat_count))
                {
                                    dictionary[element] = repeat_count + 1;
                }
                else
                    dictionary[element] = 0;
            }
 
 
            return dictionary;
        }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.12.2013, 10:21
Ответы с готовыми решениями:

Как записать две пары с одинаковыми ключами в Dictionary?
Как записать две пары с одинаковыми ключами в Dictionary? Добавлено через 7 минут Как внести в...

Как хранить в Dictionary по нескольку значений на один элемент
Столкнулся с такой проблемой, мне понадобилось создать что то типа массива, где будут хранится...

Как получить строковое представление ключей и значений из коллекции Dictionary
Как получить строковое представление значений ключе я значений из коллекции Dictionary

Как записать с Dictionary в файл
Здравствуйте, такой вопрос. Есть Dictionary в который были записаны ключи и данные с файла...

8
158 / 187 / 48
Регистрация: 25.11.2013
Сообщений: 978
12.12.2013, 10:54 2
Цитата Сообщение от blackstarr2 Посмотреть сообщение
в Dictionary входит только 65337 записей
1. Что-то у тебя не то с заполнением, смотри код, Dictionary требует уникальный Key
2. Прежде чем искать совпадения, коллекцию следует отсортировать
0
10 / 25 / 9
Регистрация: 08.12.2013
Сообщений: 115
12.12.2013, 11:22 3
Цитата Сообщение от blackstarr2 Посмотреть сообщение
Но проблема в том, что в Dictionary входит только 65337 записей
Это бред

Добавлено через 10 минут
C#
1
2
3
4
5
6
7
8
9
10
//init
            Random rnd = new Random();
            int[] array = new int[10000000];
            Parallel.For(0, array.Length, _ => array[_] = rnd.Next(0, 101));
 
            //calculate
            var t = from _ in
                        (from _ in array.AsParallel()
                         group _ by _).AsParallel()
                    select new { count = _.Count(), value = _.Key };
0
284 / 255 / 73
Регистрация: 17.07.2012
Сообщений: 618
12.12.2013, 11:25 4
Проверил, все ок. Как видно у меня 6 миллионов значений в словаре.
Миниатюры
Dictionary как записать 1000000 значений?  
1
0 / 0 / 4
Регистрация: 18.04.2013
Сообщений: 45
12.12.2013, 12:02  [ТС] 5
И действительно, проверил, все так. Может я что-то не так делаю.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private void button1_Click(object sender, EventArgs e)
        {           
            UInt32[] Million_Numbers = new UInt32[10000000];
            int[] MOD_Number = new int[10000000];
            UInt32 Bits=Convert.ToUInt32("1111111111111111",2);
                             
            for (int i = 0; i < 10000000; i++)
            {
             Million_Numbers[i] = Convert.ToUInt32(Get_Random(1000000000, 4294967295, random));
             MOD_Number[i] = Convert.ToInt32(Million_Numbers[i] % Bits);
            }
           Dictionary<int,int> Dictionary = By_Dictionary(MOD_Number);
           ICollection<int> Million_Values = Dictionary.Values;
                  
        }
Суть такова: 1. Генерирую миллион рандомных чисел 2. Делаю операцию над всеми числами Числоmod(Bits). 3. Ищу совпадения и у меня постоянно количество совпадений получается в пределах 65500, я нифига не могу понять.
0
158 / 187 / 48
Регистрация: 25.11.2013
Сообщений: 978
12.12.2013, 12:23 6
Random работает очень медленно, поэтому происходят повторения значений
0
0 / 0 / 4
Регистрация: 18.04.2013
Сообщений: 45
12.12.2013, 12:29  [ТС] 7
А то, что при перезапуске программы значение совпадений все равно остаются в пределах 65000 это нормально?
0
284 / 255 / 73
Регистрация: 17.07.2012
Сообщений: 618
12.12.2013, 12:34 8
blackstarr2, я немного потестил. И посмотрел, сколько вообще уникальных значений в том массиве.
И их число равно числу Bits. И это логично , ведь эта строчка :
C#
1
MOD_Number[i] = Convert.ToInt32(Million_Numbers[i] % Bits);
Дает остаток от деления любого числа на число Bits(т.е в данном случае 65335).
И это означает, что всего возможно 65335 вариантов ОСТАТКА.
Я думаю , вы поняли о чем я.
Программа работает корректно.
1
0 / 0 / 4
Регистрация: 18.04.2013
Сообщений: 45
12.12.2013, 12:45  [ТС] 9
И действительно!! Протестировал с различными значениям Bits и всегда получается количество совпадений не больше чем Bits) Спасибо, а то я уже все перерыл, никак не мог найти в чем проблема)
0
12.12.2013, 12:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.12.2013, 12:45
Помогаю со студенческими работами здесь

как запомнить в Scripting.Dictionary по несколько значений?
Кто подскажет как запомнить в Scripting.Dictionary в каждой строке по несколько значений. Как...

Написать программу, которая должна сгенерировать массив из 1000000 случайных целых чисел и записать их в файл
Задание. Написать программу, которая должна сгенерировать массив и з 1000000 (один миллион)...

Как достать dictionary из dictionary?
Подскажите пожалуйста как получить значение dictionary который находится внутри другого dictionary?...

Подгрузка значений из Dictionary
Здравствуйте. Есть программа,написана методом Model-View-Presenter Есть словарь с настройками в...

Записать в List несколько Dictionary в цикле
Всем пт! У меня возникла следующая проблема, надеюсь на Вашу помощь: Мне необходимо записать...

Изменение типа значений в Dictionary
Добрый день. Есть словарь Dictionary&lt;string, object&gt;. У меня такой вопрос: можно ли изменять...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru