Страница 21 из 24 ПерваяПервая ... 111920212223 ... ПоследняяПоследняя
Показано с 201 по 210 из 239

Тема: Временная тема

  1. #201

    По умолчанию

    Цитата Сообщение от AI! Посмотреть сообщение
    Плохой работающий (практический) генератор лучше хорошего но неработающего (теоретического)...
    Давайте начнём с вашего возражения?

    Цитата Сообщение от AI! Посмотреть сообщение
    Цитата Сообщение от vladimirisitnikov Посмотреть сообщение
    0) Для каких-то задач "генератор без повторений" может и потребоваться. Но слепо использовать его для всех задач -- нехорошо.

    Если говорить чем "в целом" плох генератор, который выдаёт циклами без повторений, то
    1) Плохо то, что он предсказуем. Например, если генерируем числа от 0 до 4, и 0, 1, 2, 3 уже выпали, то с вероятностью 100% выпадет число 4.
    2) Плохо то, что нет эффективной реализации для произвольного диапазона. Нет от слова "совсем". Хорошую реализацию можно сделать через массив. Т.е. заполнить его числами от 0 до N, перемешать, и выдавать по одному. На ST это тривиально, а в ОЛ уже проблематично. Но, стоит понимать, что большие массивы держать в памяти и перемешивать всё равно время займёт.
    3) Для частных случаев (некоторых N) можно сделать алгоритм не требующий массива, но он при этом будет выдавать лишь часть из возможных перестановок.

    А ничего что я уже написал сей макрос?
    Который генерирует число от 0 до n без повторений, где n произвольное, меньше 1024.
    А называется макрос rnd1024.

    PS если есть желание, сам генератор можно легко поменять на ваш, а обработчик массива оставить мой.
    Я же не говорю, что "вообще написать невозможно".
    1) Я развёрнуто говорю, почему именно в ОЛ невозможно сделать эффективную реализацию.
    2) У меня есть сомнения, что даже xorshift128 хватит, чтобы сгенерировать все возможные перестановки 0..63. Ну, в xorshift128 состояние 128 бит, а ln(64!)/ln(2) это почти 300. Возможно, во второй части я ошибаюсь, но сходу не могу сообразить хватит ли энтропии xorshift'а или нет.

    3) Можно попробовать прогнать "алгоритм rnd1024" через тесты, проверяющие "случайность" перестановки. Наверняка есть такие. Вот тут вопрос насколько предсказуемые значения генерирует rnd1024.


    Цитата Сообщение от AI! Посмотреть сообщение
    Плохой работающий (практический) генератор лучше хорошего но неработающего (теоретического)...
    Вы в каком контексте говорите про "теоретический"? В контексте ОЛ или контексте КДС/ST?
    Уверен, что ни у кого не должно быть сомнений в том, что на ST легко реализовать "random shuffle".
    Вот про "реализацию random shuffle на ОЛ" -- согласен, там непросто. Но я с самого начала и говорил, что "невозможно сделать эффективную реализацию".

  2. #202

    По умолчанию

    Цитата Сообщение от rovki Посмотреть сообщение
    Все это делается на лету и хранится текущая и предыдущая переменная в виде стека и анализируются
    В том-то и дело, что нужен не стек, а нужно хранить все числа, которые "уже возвращались" на этой итерации.
    Тут двумя переменными ну никак не обойтись.

    Цитата Сообщение от rovki Посмотреть сообщение
    Это как вы будите называть раз в сек СЧ от 0 до 10 ,а я буду выходить из комнаты и появлятся раз в минуту и может быть буду слышать только 2,2,2,2,3,5,5.5,5,1....а генератор все хорошо выдавал ...
    rovki, этот ваш пример про комнату кристально понятен. Но непонятно к чему он.
    Вы в другом ракурсе этот же пример рассказывали (про тактования), но и там было неясно к чему он.
    Тактование -- проблема/фича сугубо ОЛ. В КДС/ST такой проблемы нет. Там когда надо, тогда и вызываем блок "получения следующего значения".

  3. #203
    Пользователь Аватар для rovki
    Регистрация
    03.01.2010
    Адрес
    Чехов
    Сообщений
    12,125

    По умолчанию

    Использование СЧ это и самое главное мне нужно что бы при вызове формировались одно СЧ в передатчика генераторе без повторений склейка
    электронщик до мозга костей и не только

  4. #204

    По умолчанию

    Цитата Сообщение от rovki Посмотреть сообщение
    Использование СЧ это и самое главное мне нужно что бы при вызове формировались одно СЧ в передатчика генераторе без повторений склейка
    Если задача "сделать лото", то да, нужен ГСЧ "без повторений".

    Если задача "сгенерировать pin код", то нужен ГСЧ "с повторениями".
    Если задача "сгенерировать входной сигнал для тестов PID'а или ещё чего-нибудь", то нужен ГСЧ "с повторениями".

  5. #205
    Пользователь
    Регистрация
    21.01.2011
    Адрес
    еБург
    Сообщений
    890

    По умолчанию

    Вы слишком теоретик... На практике всё значительно проще.
    Дом смоделированный с математической точностью никогда на практике не будет идеальным
    Зачем в ПР идеальный ГСЧ? Зачем в ПР идеальное лото?

    Более того - на практике мой не идеальный ГСЧ становится идеальным, если сюда добавить что СЧ генерируется каждый такт, а пользователю СЧ нужно раз в час, причём по запросу, т.е. для ПР - в случайный момент времени.

    С такими реальными исходными данными ГСЧ может просто перебирать числа от 0 до n по порядку каждый такт, и всё равно такое число будет случайным(!) для пользователя.

    И т.д.
    Последний раз редактировалось AI!; 20.07.2016 в 14:28.
    начинающий профессионал

  6. #206

    По умолчанию

    Цитата Сообщение от AI! Посмотреть сообщение
    Вы слишком теоретик... На практике всё значительно проще.
    Дом смоделированный с математической точностью никогда на практике не будет идеальным
    Зачем в ПР идеальный ГСЧ? Зачем в ПР идеальное лото?
    Давайте всё-таки обсуждать вопросы ПР в ветке про ПР?

    Я, конечно, понимаю, что иногда удобно сдвинуть акцент в сторону "на ПР идеального ГСЧ не нужно", но
    1) Исходная ветка была про ПЛК. В КСД+ST часть алгоритмов сделать в десятки раз проще, чем в ОЛ. Буквально пара строк кода, и уже готов "идеальный вариант случайной тасовки".
    При этом, заметьте, вообще не возникает вопроса "а можно ли сделать какой-нибудь шарлатанский метод, но попроще"?
    На ST просто объявляешь массив и делаешь. 5-10 строк кода максимум. И вообще не стоит вопрос "слишком теоретик"

    2) Надеюсь, вам-то не нужно доказывать, что xorshift128 более случайный алгоритм, чем ваш LCG?
    Это не в контексте "rnd1024 не нужен", а в контексте "если уж зачем-то понадобился ГСЧ, то грех не использовать нормальные ГСЧ, например, xorshift128".

    3) И, заметьте, я провожу границу не по ПР/ПЛК, а по ST / ОЛ. Почти наверняка в текущем ПР (с точки зрения железа) можно сделать "нормальную честную тасовку". Но сама среда ОЛ не предоставляет средств для работы с массивами, поэтому и вы и начинаете "да никому не нужно это ГСЧ на ПР", "а зачем на ПР идеальное лото" и т.п.
    Если бы можно было по-нормальному сделать, то и вопросов бы вообще не возникало. Просто взять сделать макрос тасовки чисел (ну, как в wikipedia написано).

    4) Надеюсь, вы не будете против, но я напомню, что текущая тема -- простой ГСЧ. Без всяких дополнительных требований вроде "ГСЧ без повторений".
    "ГСЧ без повторений", не вопрос, можно обсуждать, но это за гранью текущей темы. Это не значит, что "ГСЧ без повторений" вообще никому не нужен. Но называть "ГСЧ без повторений как самым правильным и самым нужным генератором" тоже неправильно. Для каких-то задач он может потребоваться. Но базовый блок -- это простой ГСЧ, который может (и должен!) выдавать повторения (хоть по 5-10 раз подряд)

    Цитата Сообщение от AI! Посмотреть сообщение
    Более того - на практике мой не идеальный ГСЧ становится идеальным, если сюда добавить что СЧ генерируется каждый такт, а пользователю СЧ нужно раз в час, причём по запросу, т.е. для ПР - в случайный момент времени.
    Становится идеальным? Реально? Откуда уверенность?
    Да, я много раз соглашался с тем, что тактование добавляет энтропию. Но "идеальным" от тактования генератор уж точно не становится.

    Цитата Сообщение от AI! Посмотреть сообщение
    С такими реальными исходными данными ГСЧ может просто перебирать числа от 0 до n по порядку каждый такт, и всё равно такое число будет случайным(!) для пользователя.
    И т.д.
    Казалось бы, но нет. У вас предположение, что "запрос на число" приходит в совершенно случайный момент времени.
    Если же эта случайность не совершенная, то всё пропало.

    Да, можно сделать CTUD и считать, что "значения уж точно будут случайными". Но, это будет шарлатанство чистой воды, а не ГСЧ.
    Последний раз редактировалось Владимир Ситников; 20.07.2016 в 15:13.

  7. #207

    По умолчанию

    Цитата Сообщение от rovki Посмотреть сообщение
    0) Не хорошо не приводить расчеты и аргументы ,а только фразы
    1)Для меня равновероятно ,имхо -это когда каждое число может выпасть с равной вероятностью .для 1из 10 -10% ,а 1 из 1-100% ,естественно .Тоесть сначала вероятность у всех 10% ,потом 11.1 ,12.5 ,14.3, 16.7 ,20 ,25,33.3,50,100. по сравнению с начальной кучей .Тоесть вероятность растет у оставшихся по сравнению с общей кучей (10шт) ,но между собой они имеют равную вероятность быть выташенными ,что 3 из 3 ,что 5 из 5 каждый имеет равную вероятность .Меня не интересует вероятность оставшихся по сравнению с общей кучей ,меня интересует выроятность вытащенных значений (генерации) между собой .Да, цикл (куча) генерится вновь ,поэтому не 1из 1 остается ,а постоянно 1 из 10
    rovki, попробуйте понять, что есть 2 различные задачи: "простой ГСЧ" и "ГСЧ без повторений".
    То, что описываете вы (игра лото с бочонками, 5 из 36 и т.п.) это "ГСЧ без повторений".

    Но не надо лезть с этой своей задачей "ГСЧ без повторений" в тему, где обсуждается простой ГСЧ. Это две разные задачи, со своими границами применений.

    Цитата Сообщение от rovki Посмотреть сообщение
    2)использование массивов не представляется возможным при разности скоростей приема\передачи в 10раз ,ни какого стека не хватит ,он переполнится .
    Можете ещё раз объяснить почему "использование массивов не представляется возможным"? Вот не понимаю ваших опасений про "стек переполнится" и "разности скоростей".
    В чём принципиальная проблема выделить 8-128 байт ОЗУ на то, чтобы хранить массив бит?
    От таких объёмов в самом ПР ничего не переполнится. Возможно, получится даже сами числа хранить, т.е. массив чисел (word или dword)

  8. #208
    Пользователь Аватар для rovki
    Регистрация
    03.01.2010
    Адрес
    Чехов
    Сообщений
    12,125

    По умолчанию

    Обьясняю популярно - Массив не важно как организован имеет свойство переполнятся ,как в задаче про бассейн .Если труба что наполняет более толстая ,а та что на сливе тоньше ,то через некоторое время массив переполнится .Если вы будите останавливать генерацию СЧ (не вызывать) после вычисления одного СЧ ,то начав новую генерацию вы получите тоже число .если не будите останавливать генерацию СЧ ,а будите считывать в произвольное время или периодически ,то можете получить последовательность с большим числом "склеек" .Если вам нужно сформировать конечное количество СЧ ,то можно каждое число записать в массив ,а потом хоть год анализировать и считывать ,но такая задача не стоит .
    Задачи формирует пользователь ,а не разработчик .Мне нужен такой макрос ,а вы мне предлагаете "простой",да пусть он хоть трижды будет правильным и красивым ,но мне нужен другой ,причем я это сформулировал заранее ,а не на ходу ,что бы вас завести в тупик .Хочу СПОРТЛОТО.
    Последний раз редактировалось rovki; 20.07.2016 в 18:07.
    электронщик до мозга костей и не только

  9. #209

    По умолчанию

    Цитата Сообщение от rovki Посмотреть сообщение
    Задачи формирует пользователь ,а не разработчик .Мне нужен такой макрос ,а вы мне предлагаете "простой",да пусть он хоть трижды будет правильным и красивым ,но мне нужен другой ,причем я это сформулировал заранее ,а не на ходу ,что бы вас завести в тупик .Хочу СПОРТЛОТО.
    Заводите свою тему. Ещё раз повторю: эта тема про _простой_ ГСЧ. Если вам нужен "другой" -- создавайте отдельную тему, и не засоряйте тему про ГСЧ.

    Цитата Сообщение от rovki Посмотреть сообщение
    Обьясняю популярно - Массив не важно как организован имеет свойство переполнятся ,как в задаче про бассейн .Если труба что наполняет более толстая ,а та что на сливе тоньше ,то через некоторое время массив переполнится .Если вы будите останавливать генерацию СЧ (не вызывать) после вычисления одного СЧ ,то начав новую генерацию вы получите тоже число .если не будите останавливать генерацию СЧ ,а будите считывать в произвольное время или периодически ,то можете получить последовательность с большим числом "склеек" .Если вам нужно сформировать конечное количество СЧ ,то можно каждое число записать в массив ,а потом хоть год анализировать и считывать ,но такая задача не стоит .
    Вы о чём пишете вообще?
    Мой ответ -- rnd1024. Там используется массив. И этот массив не переполняется.
    Поэтому все ваши объяснения "массив переполнится" -- мимо.

    Я, конечно, могу показать пример на Java/ST с массивом и правильной генерацией, где будет очевидно, что ничего не переполняется. Но вот перенести этот код на ОЛ будет тяжело -- в ОЛ нет нормальных массивов.

  10. #210
    Пользователь Аватар для rovki
    Регистрация
    03.01.2010
    Адрес
    Чехов
    Сообщений
    12,125

    По умолчанию

    RND1024 для фиксированного количества CЧ ,я же говорю о не прерывной генерации .И если не будет повторений в 1024 числах ,то в следующей генерации все повторится .Если вы этот массив 1024 не успеете обработать и запустится новый процесс генерации ,то этот массив затрется новыми значениями и на стыках могут появится "склейки" из одинаковых чисел .Ну все заканчиваю ,дел по горло ,а с вами каши не сваришь ,только щи из воды...
    Да эту тему то же не вы создали и благодаря вам она оказалась на помойке (курилке) ,как и большенство не востребованных ваших тем ждут своей очереди .
    Последний раз редактировалось rovki; 20.07.2016 в 18:31.
    электронщик до мозга костей и не только

Страница 21 из 24 ПерваяПервая ... 111920212223 ... ПоследняяПоследняя

Похожие темы

  1. Тема для диплома
    от Gordan007 в разделе Трёп (Курилка)
    Ответов: 13
    Последнее сообщение: 18.01.2014, 13:08
  2. Бродит тема..
    от energohran в разделе Разработки
    Ответов: 3
    Последнее сообщение: 10.04.2012, 13:53
  3. МОДУС: тема защиты прошивки
    от Elka в разделе Модус 5684-0
    Ответов: 1
    Последнее сообщение: 28.11.2011, 23:39
  4. Язык ST. Временная задержка.
    от neoarey в разделе ПЛК1хх
    Ответов: 10
    Последнее сообщение: 26.03.2011, 01:15
  5. Ответов: 61
    Последнее сообщение: 12.09.2008, 10:49

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •