Захотел задать вопрос по прграммированию (конктерно, по С++), но не нашел такой темы, поэтому решил создать. Если это я слепой, то прошу модератора меня извинить и перенести вопрос по адресу. А если нет, то...
Возникла у меня дурацкая проблема.
У меня сишная программа, работающая с методом Монте-Карло, соответственно много-много-много раз вызывается генератор случайных чисел. И вот я заметил, что через какое-то время работы программа начинает повторяться, т.е. выводить в точности те результаты, которые уже выводила ...надцать минут назад. Т.е. генератор зациклился и пошел выдавать то же самое. Как с этим бороться?
Я испробовал очевидный способ - через сколько-то минут переинициализировать генератор через srand(time(NULL)), но это не помогло.
Работаю в Visual Studio 2015, если это имеет значение.
Программирование
#1
Опубликовано 21 Март 2018 - 17:04
#2
Опубликовано 22 Март 2018 - 02:45
Если мне не изменяет память, srand(time(0)) должен вызываться ровно один раз. Повторяться числа должны начать через 2^32 итераций, может в этом и проблема.
Тем не менее такие вопросы без хотя бы части исходников обычно не задают.
Изменено: = DM =, 22 Март 2018 - 02:47
#3
Опубликовано 22 Март 2018 - 10:10
Конкретно в C++ я не особо (кодю на шарпе и C для микрочиповских контроллеров), но исходя из общих соображений и того что говорит гугл - rand() не рекомендуют использовать для генерации длинных последовательностей псевдослучайных чисел. Лучше использовать другие генераторы из библиотеки <random> , вот, например, копипаста с MSDN с инициализацией ГПСЧ вихрем Меерсена случайным seed'ом (там ещё вывод в консоль, но я его зарезал, по сути - дальше вызываешь gen() и получаешь свой рандом):
Собственно, если есть время и желание - можно почитать здесь
Изменено: Mad_yojik, 22 Март 2018 - 10:17
#5
Опубликовано 29 Март 2018 - 13:13
Народ, кто-нибудь тут на шарпе пишет? Объясните, при каких условиях event'ы могут вызывать утечки памяти, а то я туплю.
То есть у меня имеется класс, в котором есть событие (естессно с пустым обработчиком, дабы случайно не вызвать null reference), примерно ~50 экземпляров этого класса создается классом-"родителем", он же является и подписчиком этого события (ну собственно - там один обработчик на всё, но поскольку классов -50 штук и надо "знать кто"...). В нормальном случае классы-источники и класс-подписчик существуют (не уничтожаются) всё время существования формы, или они "убиваются" вместе. Будет ли в этом случае утечка памяти из-за ивентов? Не то чтоб это было критично (вряд ли приложение будет работать больше 20-30 минут, да и перезапуск проблемы не составляет в случае чего, вещь сугубо "внутренняя для программиздов", которые скорее всего вообще будут из студии его запускать), но просто не хотелось бы писать говнокод .
Изменено: Mad_yojik, 29 Март 2018 - 13:17
#6
Опубликовано 06 Апрель 2018 - 14:11
Утечку я бы ожидал лишь в случае, если у тебя паблишер события будет жить сильно дольше подписчика. В твоём случае это маловероятно.
Тем не менее, если так сильно переживаешь по этому поводу - всегда можно реализовать IDisposable и там отписываться от событий.
В моей практике утечек памяти по причине событий я не припоминаю, хотя уже не один десяток проектов за плечами и работаю с C# с самой первой его версии.
#8
Опубликовано 13 Июнь 2018 - 10:39
Вопрос к 1с-никам, (платформа 77, может еще помнит кто), объект excel.application, нужно выделить текущий лист, и убрать во всех ячейках пробелы слева, желательно без циклов. Excel формируется из Yokcel и все бы хорошо, но эта зараза вставляет пробел, в результате строки типа дата некорректно отображаются.
#10
Опубликовано 12 Апрель 2019 - 07:33
Народ, а подскажите с чего вообще стоит начать в программировании, то бишь с какого языка лучше начинать кодить?
С математики )).
Ты неправильно вопрос ставишь. Вопрос в том, тебе для работы или для развлекухи, а если для работы, то что делать собираешься.
#11
Опубликовано 12 Апрель 2019 - 08:58
С математики )).
Ты неправильно вопрос ставишь. Вопрос в том, тебе для работы или для развлекухи, а если для работы, то что делать собираешься.
Для общего развития, ну и развлекухи соответственно, в детстве бейсиком на спектруме не много увлекался, игры взламывал и изменял их, читерил словом)
#12
Опубликовано 12 Апрель 2019 - 11:31
Для общего развития, ну и развлекухи соответственно
Python. Интерпретируемый, мультипарадигмальный, свободный, читабельный, легкий в обучении, современный, активно развивающийся. Обучающих материалов по нему не много, а очень много. Ну и...
Развлекуха и развитие гарантированны, причем сразу с места в карьер.
Изменено: SMer4, 12 Апрель 2019 - 11:33
#14
Опубликовано 10 Июнь 2020 - 12:09
Вопрос скорее ближе к системному администрированию, но думаю отдельную тему создавать не стоит.
Ситуация такова, рабочий сервак перевели на SQL2016, тестовый на 2014, оно так то не особо влияет, но как оказалось бэкапы с 2016 не читаются на 2014, а на тестовой машине иногда нужны копии рабочих баз. В установщике есть отдельный пункт "Update", но при его выполнении только создается раздел в программ файлз, наших админов к sql подпускать страшно, когда админил сам, обычно скриптовал планы обслуживания, джобы юзерей и всякую прочую сторонку, после чего старая версия сервака сносилась и ставилась новая.
Суть вопроса, у когонть есть практика нормального апгрейта версии с установщика ? Если что, можно в личке пообщаться.
Изменено: Edwardkz, 10 Июнь 2020 - 12:11
#15
Опубликовано 16 Июнь 2020 - 21:37
Access. БД, допустим, с двумя таблицами, в которых есть некое общее поле, одноименное. Но общее число записей в таблицах разное. Нужно собрать запрос или таблицу, которые бы общее поле делал бы одним, но множил бы значения так, чтобы и таблица с большим числом вписалась бы, и с меньшим.
Сейчас я это пробую сделать, но что-то оно начинает странным образом множить значения. Мда... Наверное, без примера никто не подскажет, что искать.
Изменено: Alexium, 16 Июнь 2020 - 21:44
#16
Опубликовано 16 Июнь 2020 - 22:11
Access. БД, допустим, с двумя таблицами, в которых есть некое общее поле, одноименное. Но общее число записей в таблицах разное. Нужно собрать запрос или таблицу, которые бы общее поле делал бы одним, но множил бы значения так, чтобы и таблица с большим числом вписалась бы, и с меньшим.
Тебе кросс джойн чтоль надо ? Декартово произведение ? Пример. В акцессе вроде схожий синтаксис.
но множил бы значения так
Вот чет с трудом понимаю, что ты добиться хочешь.
Изменено: Edwardkz, 16 Июнь 2020 - 22:12
#19
Опубликовано 16 Июнь 2020 - 22:46
С умножением я намудрил в словах. Да, нужно, чтобы разультат включал обе таблицы. И он включает, но как-то странно дублируются (или более) некоторые записи.
У меня две таблицы примерно так:
.
ID Знач1
1 8
2 5
2 3
3 4
ID Знач2
1 5
2 1
3 7
3 6
Нужно получить нечто вроде:
ID Знач1 Знач2
1 8 5
2 5 1
2 3 1
3 4 7
3 4 6
Изменено: Alexium, 16 Июнь 2020 - 22:58
#22
Опубликовано 16 Июнь 2020 - 23:43
Тебе нужно записи идентификаторы которых присутствуют в ОБЕИХ таблицах ? Тогда внутренним соединением, т.н. inner join. И опять же, ключ по идентификатору не уникален, вполне вероятно может задвоить. Группировать или выбирать по дистинкту.
з.ы. Открой уже букварь в гугле, да почитай про типы соединений. Например.
з.з.ы. Модераторы, запихните это в программирование. Пожалуйста. Совсем тема не подходящая.
Изменено: Edwardkz, 16 Июнь 2020 - 23:56
#24
Опубликовано 17 Июнь 2020 - 05:25
2 5
2 5
и
2 1
3 4
то какой должна быть результирующая таблица?
2 5 1
2 5 1
3 n 4
?
Или
2 5 1
3 n 4
?
Может, вот это как-то поможет?
https://support.micr...&rs=ru-ru&ad=ru
Изменено: Ipse Impia, 17 Июнь 2020 - 06:06