Перейти к содержимому

  • Войти / Регистрация

Фото

Программирование


  • Чтобы отвечать, сперва войдите на форум
72 ответов в теме

#1 Ushwood

Опубликовано 21 Март 2018 - 17:04  

Ushwood

    Moderator

  • Модератор
  • 6 570
  • Сообщений: 13 436

Захотел задать вопрос по прграммированию (конктерно, по С++), но не нашел такой темы, поэтому решил создать. Если это я слепой, то прошу модератора меня извинить и перенести вопрос по адресу. А если нет, то...

Возникла у меня дурацкая проблема.
У меня сишная программа, работающая с методом Монте-Карло, соответственно много-много-много раз вызывается генератор случайных чисел. И вот я заметил, что через какое-то время работы программа начинает повторяться, т.е. выводить в точности те результаты, которые уже выводила ...надцать минут назад. Т.е. генератор зациклился и пошел выдавать то же самое. Как с этим бороться?

Я испробовал очевидный способ - через сколько-то минут переинициализировать генератор через srand(time(NULL)), но это не помогло.

Работаю в Visual Studio 2015, если это имеет значение.


  • 0

#2 = DM =

Опубликовано 22 Март 2018 - 02:45  

= DM =

    Почетный посетитель

  • Завсегдатай
  • ФишкаФишка
  • 110
  • Сообщений: 349
  • Откуда:Харьков

Если мне не изменяет память, srand(time(0)) должен вызываться ровно один раз. Повторяться числа должны начать через 2^32 итераций, может в этом и проблема.

Тем не менее такие вопросы без хотя бы части исходников обычно не задают.


Изменено: = DM =, 22 Март 2018 - 02:47

  • 0

#3 Mad_yojik

Опубликовано 22 Март 2018 - 10:10  

Mad_yojik

    Заслуженный ветеран

  • Завсегдатай
  • ФишкаФишкаФишкаФишка
  • 382
  • Сообщений: 4 632
  • Откуда:где пиксели зеленее а мониторы больше

Конкретно в C++ я не особо (кодю на шарпе и C для микрочиповских контроллеров), но исходя из общих соображений и того что говорит гугл - rand() не рекомендуют использовать для генерации длинных последовательностей псевдослучайных чисел. Лучше использовать другие генераторы из библиотеки <random> , вот, например, копипаста с MSDN с инициализацией ГПСЧ вихрем Меерсена  случайным seed'ом (там ещё вывод в консоль, но я его зарезал, по сути - дальше вызываешь gen() и получаешь свой рандом):

 

Spoiler

 

Собственно, если есть время и желание - можно почитать здесь


Изменено: Mad_yojik, 22 Март 2018 - 10:17

  • 1

#4 Ushwood

Опубликовано 22 Март 2018 - 12:34  

Ushwood

    Moderator

  • Модератор
  • 6 570
  • Сообщений: 13 436
Mad_yojik

Спасибо, это работает :).


  • 0

#5 Mad_yojik

Опубликовано 29 Март 2018 - 13:13  

Mad_yojik

    Заслуженный ветеран

  • Завсегдатай
  • ФишкаФишкаФишкаФишка
  • 382
  • Сообщений: 4 632
  • Откуда:где пиксели зеленее а мониторы больше

Народ, кто-нибудь тут на шарпе пишет? Объясните, при каких условиях event'ы  могут вызывать утечки памяти, а то я туплю.

 

То есть у меня имеется класс, в котором есть событие (естессно с пустым обработчиком, дабы случайно не вызвать null reference), примерно ~50 экземпляров этого класса создается классом-"родителем", он же является и подписчиком этого события (ну собственно - там один обработчик на всё, но поскольку классов -50 штук и надо "знать кто"...). В нормальном случае классы-источники и класс-подписчик существуют (не уничтожаются) всё время существования формы, или они "убиваются" вместе. Будет ли в этом случае утечка памяти из-за ивентов? Не то чтоб это было критично (вряд ли приложение будет работать больше 20-30 минут, да и перезапуск проблемы не составляет в случае чего, вещь сугубо "внутренняя для программиздов", которые скорее всего вообще будут из студии его запускать), но просто не хотелось бы писать говнокод ;).


Изменено: Mad_yojik, 29 Март 2018 - 13:17

  • 0

#6 = DM =

Опубликовано 06 Апрель 2018 - 14:11  

= DM =

    Почетный посетитель

  • Завсегдатай
  • ФишкаФишка
  • 110
  • Сообщений: 349
  • Откуда:Харьков

Утечку я бы ожидал лишь в случае, если у тебя паблишер события будет жить сильно дольше подписчика. В твоём случае это маловероятно.

Тем не менее, если так сильно переживаешь по этому поводу - всегда можно реализовать IDisposable и там отписываться от событий.

 

В моей практике утечек памяти по причине событий я не припоминаю, хотя уже не один десяток проектов за плечами и работаю с C# с самой первой его версии.


  • 1

#7 Doriginn

Опубликовано 11 Июнь 2018 - 11:06  

Doriginn

    Новичок

  • Участник
  • Фишка
  • 0
  • Сообщений: 6

Мне тоже оказалась полезной информацией это


  • 0

#8 Edwardkz

Опубликовано 13 Июнь 2018 - 10:39  

Edwardkz

    Мастер форумных баталий

  • Завсегдатай
  • ФишкаФишкаФишкаФишкаФишкаФишка
  • 2 239
  • Сообщений: 9 066
  • Откуда:Танкоград

Вопрос к 1с-никам, (платформа 77, может еще помнит кто), объект excel.application, нужно выделить текущий лист, и убрать во всех ячейках пробелы слева, желательно без циклов. Excel формируется из Yokcel и все бы хорошо, но эта зараза вставляет пробел, в результате строки типа дата некорректно отображаются.


  • 0

#9 Adri Kupri

Опубликовано 11 Апрель 2019 - 23:17  

Adri Kupri

    Продвинутый активист

  • Завсегдатай
  • ФишкаФишкаФишка
  • 128
  • Сообщений: 1 101

Народ, а подскажите с чего вообще стоит начать в программировании, то бишь с какого языка лучше начинать кодить?


  • 0

#10 Edwardkz

Опубликовано 12 Апрель 2019 - 07:33  

Edwardkz

    Мастер форумных баталий

  • Завсегдатай
  • ФишкаФишкаФишкаФишкаФишкаФишка
  • 2 239
  • Сообщений: 9 066
  • Откуда:Танкоград


Народ, а подскажите с чего вообще стоит начать в программировании, то бишь с какого языка лучше начинать кодить?

С математики )).

Ты неправильно вопрос ставишь. Вопрос в том, тебе для работы или для развлекухи, а если для работы, то что делать собираешься.


  • 0

#11 Adri Kupri

Опубликовано 12 Апрель 2019 - 08:58  

Adri Kupri

    Продвинутый активист

  • Завсегдатай
  • ФишкаФишкаФишка
  • 128
  • Сообщений: 1 101

С математики )).

Ты неправильно вопрос ставишь. Вопрос в том, тебе для работы или для развлекухи, а если для работы, то что делать собираешься.

Для общего развития, ну и развлекухи соответственно, в детстве бейсиком на спектруме не много увлекался, игры взламывал и изменял их, читерил словом)


  • 0

#12 SMer4

Опубликовано 12 Апрель 2019 - 11:31  

SMer4

    Советник гильдии флуда

  • Завсегдатай
  • ФишкаФишкаФишка
  • 894
  • Сообщений: 2 166

Для общего развития, ну и развлекухи соответственно

Python. Интерпретируемый, мультипарадигмальный, свободный, читабельный, легкий в обучении, современный, активно развивающийся. Обучающих материалов по нему не много, а очень много. Ну и...


Развлекуха и развитие гарантированны, причем сразу с места в карьер.


Изменено: SMer4, 12 Апрель 2019 - 11:33

  • 2

#13 Edwardkz

Опубликовано 12 Апрель 2019 - 11:33  

Edwardkz

    Мастер форумных баталий

  • Завсегдатай
  • ФишкаФишкаФишкаФишкаФишкаФишка
  • 2 239
  • Сообщений: 9 066
  • Откуда:Танкоград


, в детстве бейсиком на спектруме не много увлекался

Ну в принципе можешь VisualBasic покопать, или шарп, в качестве развития, java очень популярна сейчас. Для баз данных SQL-скрипты, MySql или T-Sql.


  • 1

#14 Edwardkz

Опубликовано 10 Июнь 2020 - 12:09  

Edwardkz

    Мастер форумных баталий

  • Завсегдатай
  • ФишкаФишкаФишкаФишкаФишкаФишка
  • 2 239
  • Сообщений: 9 066
  • Откуда:Танкоград

Вопрос скорее ближе к системному администрированию, но думаю отдельную тему создавать не стоит.

 

Ситуация такова, рабочий сервак перевели на SQL2016, тестовый на 2014, оно так то не особо влияет, но как оказалось бэкапы с 2016 не читаются на 2014, а на тестовой машине иногда нужны копии рабочих баз. В установщике есть отдельный пункт "Update", но при его выполнении только создается раздел в программ файлз, наших админов к sql подпускать страшно, когда админил сам, обычно скриптовал планы обслуживания, джобы юзерей и всякую прочую сторонку, после чего старая версия сервака сносилась и ставилась новая.

 

Суть вопроса, у когонть есть практика нормального апгрейта версии с установщика ? Если что, можно в личке пообщаться.


Изменено: Edwardkz, 10 Июнь 2020 - 12:11

  • 0

#15 Alexium

Опубликовано 16 Июнь 2020 - 21:37  

Alexium

    The Companions

  • Завсегдатай
  • ФишкаФишкаФишкаФишкаФишка
  • 2 130
  • Сообщений: 5 404
  • Откуда:Смоленск
Уже не чайниковский вопрос, но задать его негде. Даже Гугл не поможет, т.к., сформулировать не могу толком.

Access. БД, допустим, с двумя таблицами, в которых есть некое общее поле, одноименное. Но общее число записей в таблицах разное. Нужно собрать запрос или таблицу, которые бы общее поле делал бы одним, но множил бы значения так, чтобы и таблица с большим числом вписалась бы, и с меньшим.

Сейчас я это пробую сделать, но что-то оно начинает странным образом множить значения. Мда... Наверное, без примера никто не подскажет, что искать.

Изменено: Alexium, 16 Июнь 2020 - 21:44

  • 0

#16 Edwardkz

Опубликовано 16 Июнь 2020 - 22:11  

Edwardkz

    Мастер форумных баталий

  • Завсегдатай
  • ФишкаФишкаФишкаФишкаФишкаФишка
  • 2 239
  • Сообщений: 9 066
  • Откуда:Танкоград

Access. БД, допустим, с двумя таблицами, в которых есть некое общее поле, одноименное. Но общее число записей в таблицах разное. Нужно собрать запрос или таблицу, которые бы общее поле делал бы одним, но множил бы значения так, чтобы и таблица с большим числом вписалась бы, и с меньшим.

Тебе кросс джойн чтоль надо ? Декартово произведение ? Пример. В акцессе вроде схожий синтаксис.

 


но множил бы значения так

Вот чет с трудом понимаю, что ты добиться хочешь.


Изменено: Edwardkz, 16 Июнь 2020 - 22:12

  • 0

#17 Ipse Impia

Опубликовано 16 Июнь 2020 - 22:14  

Ipse Impia

    Заслуженный ветеран

  • Завсегдатай
  • ФишкаФишкаФишкаФишка
  • 1 218
  • Сообщений: 4 213

Тебе кросс джойн чтоль надо ? Декартово произведение ?

Имхо, похоже на то, что надо объединить две таблицы по ключу, при этом результирующая таблица должна включать все поля и записи исходных таблиц. Хотя это не точно :)
  • 0

#18 Edwardkz

Опубликовано 16 Июнь 2020 - 22:18  

Edwardkz

    Мастер форумных баталий

  • Завсегдатай
  • ФишкаФишкаФишкаФишкаФишкаФишка
  • 2 239
  • Сообщений: 9 066
  • Откуда:Танкоград


Имхо, похоже на то, что надо объединить две таблицы по ключу, при этом результирующая таблица должна включать все поля и записи исходных таблиц. Хотя это не точно

Меня фраза про умножение значений смутила.


  • 0

#19 Alexium

Опубликовано 16 Июнь 2020 - 22:46  

Alexium

    The Companions

  • Завсегдатай
  • ФишкаФишкаФишкаФишкаФишка
  • 2 130
  • Сообщений: 5 404
  • Откуда:Смоленск

С умножением я намудрил в словах. Да, нужно, чтобы разультат включал обе таблицы. И он включает, но как-то странно дублируются (или более) некоторые записи.

 

У меня две таблицы примерно так:

.

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

  • 0

#20 Edwardkz

Опубликовано 16 Июнь 2020 - 22:51  

Edwardkz

    Мастер форумных баталий

  • Завсегдатай
  • ФишкаФишкаФишкаФишкаФишкаФишка
  • 2 239
  • Сообщений: 9 066
  • Откуда:Танкоград


Да, нужно, чтобы разультат включал обе таблицы. И он включает, но как-то странно дублируются (или более) некоторые записи.

Ты пример то глянь. Если индекс не уникален, то понятно, что записи будут дублироваться. Distinct или Group By помогут.


  • 0

#21 Alexium

Опубликовано 16 Июнь 2020 - 23:16  

Alexium

    The Companions

  • Завсегдатай
  • ФишкаФишкаФишкаФишкаФишка
  • 2 130
  • Сообщений: 5 404
  • Откуда:Смоленск

Я где-то не так, как нужно думаю, похоже. Почти поймал мысль, но она опять улетела. Вопрос неверный.


  • 0

#22 Edwardkz

Опубликовано 16 Июнь 2020 - 23:43  

Edwardkz

    Мастер форумных баталий

  • Завсегдатай
  • ФишкаФишкаФишкаФишкаФишкаФишка
  • 2 239
  • Сообщений: 9 066
  • Откуда:Танкоград

Тебе нужно записи идентификаторы которых присутствуют в ОБЕИХ таблицах ? Тогда внутренним соединением, т.н. inner join. И опять же, ключ по идентификатору не уникален, вполне вероятно может задвоить. Группировать или выбирать по дистинкту.

 

з.ы. Открой уже букварь в гугле, да почитай про типы соединений. Например.

з.з.ы. Модераторы, запихните это в программирование. Пожалуйста. Совсем тема не подходящая.


Изменено: Edwardkz, 16 Июнь 2020 - 23:56

  • 0

#23 teallite

Опубликовано 17 Июнь 2020 - 02:01  

teallite

    Продвинутый активист

  • Завсегдатай
  • ФишкаФишкаФишка
  • 497
  • Сообщений: 1 117

Нужно получить нечто вроде:
ID  Знач1  Знач2
1       8         5
2       5         1
2       3         1
3       4         7
3       4         6

SELECT table1.id, val1, val2 FROM table1, table2
WHERE table1.id = table2.id
  • 0

#24 Ipse Impia

Опубликовано 17 Июнь 2020 - 05:25  

Ipse Impia

    Заслуженный ветеран

  • Завсегдатай
  • ФишкаФишкаФишкаФишка
  • 1 218
  • Сообщений: 4 213
Если исходные таблицы
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

  • 0

#25 Edwardkz

Опубликовано 17 Июнь 2020 - 07:35  

Edwardkz

    Мастер форумных баталий

  • Завсегдатай
  • ФишкаФишкаФишкаФишкаФишкаФишка
  • 2 239
  • Сообщений: 9 066
  • Откуда:Танкоград


то какой должна быть результирующая таблица?
2 5 1
2 5 1
3 n 4
?
Или
2 5 1
3 n 4
?

 

Зачем ты их right join-ом  соединил ?  :)  Он так еще больше запутается.


  • 0




Привет!

Насколько мы поняли, вы используете блокировщик рекламы в вашем браузере. Скорее всего, это AdBlock или AdBlock Plus.

Учитывая, сколько агрессивной рекламы можно встретить на различных сайтах, это, возможно, и оправданно.

Однако Riot Pixels — пока ещё небольшой сайт, мы существуем в основном на деньги, получаемые от различных рекламодателей. Пользователей же с установленным AB/ABP на Riot Pixels сейчас — более 30%. Это очень много.

У блокировщиков рекламы есть еще одно плохое свойство — у вас может «поехать» дизайн или перестанут показываться скриншоты.

Мы не хотим предпринимать активных действий в отношении блокировщиков рекламы (например, закрывать контент) — это не по-человечески. Однако и безучастно смотреть никак не можем. Поэтому у нас к вам большая просьба — пожалуйста, внесите Riot Pixels в «белый список» вашего блокировщика. Это поможет нам и дальше жить и развиваться, а вам ничего не будет стоить.

Спасибо!
Команда Riot Pixels.