Ну, hill/корень я убрал -- у меня норм работает (в симуляторе).
В #173 ошибка не исправлена.
stuff заполняется до idx, а читается до idx+1.
Сделайте, пожалуйста, ещё скрин, чтобы там в цикле верхняя граница была idx, и тоже сумма зашкалила.
Ну, hill/корень я убрал -- у меня норм работает (в симуляторе).
В #173 ошибка не исправлена.
stuff заполняется до idx, а читается до idx+1.
Сделайте, пожалуйста, ещё скрин, чтобы там в цикле верхняя граница была idx, и тоже сумма зашкалила.
Последний раз редактировалось Владимир Ситников; 20.07.2016 в 23:27.
это однозначно из-за добавленой единицы в цикле, я раскрывал массив там кроме нулей и единиц другого не было,в конце точно.п просто КДС так вот пропускает когда массив объявлен через переменные, на цифрах он у меня ругается,но их менять во многих местах неудобно
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
я уже часов шесть не за компом,включал чтоб экспорт сделать.завтра попробую на еще одном плк. И да, симулятор это опять работа на ПК, там и 32-битное число разделиться на верхнюю границу диапазона, а в плк можно и минусовые значения получить, поэтому только завтра смогу узнать в чем была проблема
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
да из-за не правильно написанного цикла были эти непонятки, сейчас всё работает. Результаты следующие вичманн-хилл из 51 одного прогона показал результат 22 при ERFC больше 61%, xorshift показал 18 из 51 причем один раз останов был из-за ошибки меньше одного процента, поэтому запускался повторно
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
Можете переформулировать?
Что значит "xorshift показал 18 из 51"?
Уточню: даже при использовании железного генератора есть шанс, что erfc окажется меньше 1%. Шанс невелик, но он всё равно есть. Поэтому вопрос не в том "возникнет ли случай, что erfc оказалось меньше 1%", а в том "сколько раз такое возникнет".
менее процента возник один раз, про оскат даже не написал потому что максимум сколько он продержался это пять прогонов на шестом меньше процетнта, на других запусках еще меньше требовалось времни чтоб остановить тест , а вот стремление к равновесию я определил как значение erfc больше 61% у вичманхила выше, не намного конечно, но зато и остановок небыло из-за непрохождения тестов
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
Раз уж тестируете, то поправьте ошибку в вашей реализации hill'а.
У вас
res:=(UINT_TO_REAL(A)/30269.0 + UINT_TO_REAL(B)/30307.0 + UINT_TO_REAL(C)/30323.0)/3.0;
А должно быть
res:=ДРОБНАЯ_ЧАСТЬ_ОТ(UINT_TO_REAL(A)/30269.0 + UINT_TO_REAL(B)/30307.0 + UINT_TO_REAL(C)/30323.0);
Вариант /3 не проходит Runs и FFT тесты на длиннах в 1'000'000 бит
Вариант дробная_часть_от(a/30269.0 + b/30307.0 + c/30323.0) -- проходит.
Запустил hill и xorshift128 с теми константами, которые используются у вас.
Указал "тестировать последовательности из 10001 бит", "тестировать 100'000 последовательностей"
Результат nist:
1) xorshift128 -- ">1% результат оказался у 99018 из 100000 экспериментов". Да, в 100000-99018=982 случаях тест frequency показал "как бы отрицательный результат"
2) hill (не /3, а исправленный алгоритм) -- ">1% результат оказался у 98975 из 100000 экспериментов".
Далее, для принятия решения "прошёл тест frequency или нет" nist пишет, что "для таких входных данных, должно пройти как минимум 98905 тестов"
Т.е. видно, что и xorshift128 и hill тест frequency проходят, несмотря на то, что и у первого и у второго алгоритма есть случаи, когда erfc оказывается менее 1%Код:The minimum pass rate for each statistical test with the exception of the random excursion (variant) test is approximately = 98905 for a sample size = 100000 binary sequences. For further guidelines construct a probability table using the MAPLE program provided in the addendum section of the documentation.
Ну, что в итоге?
На ПЛК всё работает так же, как и на ПК?