PDA

Просмотр полной версии : Симуляция не работает в 1.8.62: Object reference not set to an instance of an object



Владимир Ситников
16.07.2016, 18:27
1.8.62.6638, ошибка Object reference not set to an instance of an object

25422

Ошибка:
25423

Проект: 25424

Алексей Геннадьевич
18.07.2016, 09:06
ПР110 работает только с 16 разрядными внутренними переменными. Это для начала.

rovki
18.07.2016, 10:51
ПР110 работает только с 16 разрядными внутренними переменными. Это для начала.
А что так ?Почему не 64 ,как то не универсально ...;)
Можно правда на Пр200 перенести ,но тогда опять для каждой ПР свой RND ,опять не универсально ...А кто то говорил ,что математика везде должна работать ,хоть на счетах ,хоть на ПР ,хоть на ПК . Так всегда бывает ,когда не учитываешь ,то на чем ездить будешь..;)

Владимир Ситников
18.07.2016, 11:15
ПР110 работает только с 16 разрядными внутренними переменными. Это для начала.

Внутренние -- пусть какие угодно будут.
А в документации на ОЛ ограничений в 16 разрядов нет.
Про XOR/SHL, конечно, вообще ничего не сказано про разрядность, но в ADD явно сказано, что речь о 32 bit unsigned int.
Как уж они представляются в процессоре -- меня не волнует. Главное, чтобы работали как 32 bit unsigned int.

Алексей Геннадьевич
18.07.2016, 12:21
А что так ?Почему не 64 ,как то не универсально ...;)
Вы на ПР110 больше граблей знаете.
Один стек чего стоит...

Так всегда бывает ,когда не учитываешь ,то на чем ездить будешь..
Отож.

Евстигнеев Максим
18.07.2016, 13:38
1.8.62.6638, ошибка Object reference not set to an instance of an object

25422

Ошибка:
25423

Проект: 25424

Спасибо, Владимир. Проблема понятна. В следующей версии 1.8 внесем ловушку для отлова данной ошибки.

Возвращаю Вам ваш проект с исправлением.

Владимир Ситников
18.07.2016, 14:15
Спасибо, Владимир. Проблема понятна. В следующей версии 1.8 внесем ловушку для отлова данной ошибки.

Возвращаю Вам ваш проект с исправлением.

Поправил 4-ую константу -- в симуляции значения совпадают с теми, что вычисляются в C.
25438

value = 3701687786
value = 458299110
value = 2500872618
value = 3633119408
value = 516391518
value = 2377269574
и т.д.

rovki
18.07.2016, 14:20
Ну и как теперь его потреблять ,мелькают одни миллионы ,миллиарды ,а мне надо 0-100...

Владимир Ситников
18.07.2016, 14:36
Ну и как теперь его потреблять ,мелькают одни миллионы ,миллиарды ,а мне надо 0-100...

Если от 0 до 100, то достаточно поставить "остаток от деления на 101".
Для больших диапазонов начнёт ощущаться неравномерность (в java в таких случаях вообще цикл используется (https://docs.oracle.com/javase/7/docs/api/java/util/Random.html#nextInt(int)))
Например, если потребуется число в диапазоне 0..(230+1), то просто так считать остаток от деления на это самое 230+1 уже нехорошо.

Т.е. либо использовать float'ы (ну, поделить на 232-1 и умножить на 100), либо остаток от деления.


Для степеней двойки можно просто and делать -- будет равномерный выход. Например, and(..., 15) -- и на выходе равномерное распределение от 0 до 15-и включительно.

rovki
18.07.2016, 14:43
Ну так и надо доделать до конца как у AI,ряд от 0 до 2 в степени 30 на ПР ни кого не интересует ...
ограничений по диапазону быть не должно -хоть 36 ,хоть 49 ...

Сергей0308
18.07.2016, 15:01
Трудно не согласиться с ровки для удобства пользования надо добавить границы диапазона(в виде входов или констант), не каждый сможет правильно подогнать под свои нужды! Представляю всё Ваше возмущение, практически всё сделал, осталось вогнать в нужный диапазон!!!

rovki
18.07.2016, 15:04
Просто полуфабрикаты мало кому нужны .Или не делать вообще или сделать удобоваримо .
Да я лучше закрою глаза на не равномерность распределения в макросе AI,чем буду что то подгонять ...

Владимир Ситников
18.07.2016, 15:56
Трудно не согласиться с ровки для удобства пользования надо добавить границы диапазона(в виде входов или констант), не каждый сможет правильно подогнать под свои нужды! Представляю всё Ваше возмущение, практически всё сделал, осталось вогнать в нужный диапазон!!!

Неужели сложно добавить mod(..., max-min+1)+min?
Ну, реально. В чём проблема?

Более того, я увернен, что и после добавления min-max всё равно будут те, кому код не подойдёт. Кому-то тактовый выход понадобится, а кому-то понадобится неравномерный генератор.

Собственно, min-max: 25444

Владимир Ситников
18.07.2016, 16:02
Просто полуфабрикаты мало кому нужны .Или не делать вообще или сделать удобоваримо .
Да я лучше закрою глаза на не равномерность распределения в макросе AI,чем буду что то подгонять ...

Напомню, что у AI нужно что-то там обрезать в красных квадратах: http://www.owen.ru/forum/showthread.php?t=7023&page=305&p=98927&viewfull=1#post98927

И, да, понятие об удобоваримости у каджого своё. По мне, так часть mod(..., max-min+1)+min вообще может отдельным макросом быть.

rovki
18.07.2016, 16:28
Напомню, что у AI нужно что-то там обрезать в красных квадратах: http://www.owen.ru/forum/showthread.php?t=7023&page=305&p=98927&viewfull=1#post98927

И, да, понятие об удобоваримости у каджого своё. По мне, так часть mod(..., max-min+1)+min вообще может отдельным макросом быть.
Квадратики это баги были в ол.

rovki
18.07.2016, 16:34
А вот и первый тест -два макроса от AI и Ситникова

rovki
18.07.2016, 16:40
0-20шт
1-33шт
2-15шт
3-16
4-15
5-20
6-22
7-14
8-19
9-20
10-25
это у Ситникова такая равновероятность

Владимир Ситников
18.07.2016, 16:44
0-20шт
1-33шт
2-15шт
3-16
4-15
5-20
6-22
7-14
8-19
9-20
10-25
это у Ситникова такая равновероятность

И? Вывод какой?

rovki
18.07.2016, 16:47
Проверяем у AI
0-27
1-16
2-18
3-13
4-18
5-22
6-13
7-13
8-25
9-27
10-25
и стоило неделю нервов ради этого тратить ...

rovki
18.07.2016, 16:49
И? Вывод какой?

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

и почему то много дублетов и да же 3 раза подряд одни значения наблюдались в вашем варианте ,у AI видел только двойное -8 дублетов ..
у вас 10 дублетов и 1 тройной (семерка).

rovki
18.07.2016, 17:02
На графике 3минуты -180сек ,значит среднее к0личество должно быть 17-18 раз на этом интервале .
Надо всегда теорию сравнивать с теорией ,а практику с практикой ,при чем в одинаковых условиях.

Владимир Ситников
18.07.2016, 17:06
Не видать равновероятного распределения при 11 значениях и около 300измерений .Не, ну может в бесконечности все выровнится ....но я так долго ждать не могу

и почему то много дуплетов и да же 3 раза подряд одни значения наблюдались в вашем варианте ,у AI видел только двойное ..

Так давайте определимся что именно нужно.
С точки зрения математической статистики:
1) От действительно хорошего ГСЧ не ожидается, что он будет выдавать одинаковое количество каждого значения.
2) В действительно случайном генераторе одно и то же значение может и 3 и 5 и 10 раз подряд повториться
3) Более того, если генератор постоянно обеспечивает одинаковое количество каждого из результатов, то он не является случайным. Фактически "последнее значение" можно предсказать со 100% вероятностью.

Вот вам пример: https://www.random.org/integers/?num=300&min=0&max=10&col=1&base=10&format=html&rnd=new
Этот сайт, который генерирует реально рандомные значения.
Я взял оттуда 300 чисел от 0 до 10, и получилось такое:


результат количество
0 18
1 25
2 30
3 29
4 29
5 31
6 26
7 28
8 30
9 30
10 24


Если нужен "генератор, который за 44 запуска генерирует по 4 раза каждого из 0..10", то это нужно отдельно делать. Т.е. дополнительным макросом.

rovki
18.07.2016, 17:13
Не надо сравнивать реализацию на разных обьектах .Делаем для ПР ,значит и сравниваем на ПР.,сравним .А то опять в дебри уйдем .Я вам дал скрин ,а вы думайте почему не так как в теории на ПК ,да возьмите не 300 ,а 180отсчетов

Владимир Ситников
18.07.2016, 17:21
Не надо сравнивать реализацию на разных обьектах .Делаем для ПР ,значит и сравниваем на ПР.,сравним .А то опять в дебри уйдем
Включайте мозг.
Я же уже сказал, что с точки зрения теории значения _обязаны_ повторяться.
Должны быть и повторения по 3 раза, и по 4, и по 5 раз.
Такова математика. А математика у нас что на ПР, что в умах учёных одна и та же.


Я вам дал скрин ,а вы думайте почему не так как в теории на ПК ,да возьмите не 300 ,а 180отсчетов
И что с этим скрином не так?

rovki
18.07.2016, 17:26
Так давайте определимся что именно нужно.
С точки зрения математической статистики:
1) От действительно хорошего ГСЧ не ожидается, что он будет выдавать одинаковое количество каждого значения.
2) В действительно случайном генераторе одно и то же значение может и 3 и 5 и 10 раз подряд повториться
3) Более того, если генератор постоянно обеспечивает одинаковое количество каждого из результатов, то он не является случайным. Фактически "последнее значение" можно предсказать со 100% вероятностью.

Вот вам пример: https://www.random.org/integers/?num=300&min=0&max=10&col=1&base=10&format=html&rnd=new
Этот сайт, который генерирует реально рандомные значения.
Я взял оттуда 300 чисел от 0 до 10, и получилось такое:


результат количество
0 18
1 25
2 30
3 29
4 29
5 31
6 26
7 28
8 30
9 30
10 24


Если нужен "генератор, который за 44 запуска генерирует по 4 раза каждого из 0..10", то это нужно отдельно делать. Т.е. дополнительным макросом.
Мне лично ничего не нужно ,мне хватало того что было .Вы сказали что это плохой макрос ,дали свой ,теперь я сравниваю(визуально) и не вижу большой разницы .
Для меня ,может я ошибаюсь -равновероятно имеет смысл только при большом количестве отсчетов (орел\орешка) ...
Не даром я вас спрашивал о задачах где может потребоваться RND для ПР,а вы отмахнулись .Так вот RND для ПР я использовал в некоторых игрушках - огни елки ,тренажер реакции оператора и еще несколько подобных проектах .А теперь подумайте стоило ли столько сил и нервов тратить для таких задач ,которые не критичны к тому что вас не устроило в старом макросе .
Может у вас есть другие применения ГСЧ для ПР,расскажите .То есть сначала ставится цель ,а потом выбирается оптимальный путь ,а не наоборот -один путь на все случаи жизни (цели)

rovki
18.07.2016, 17:38
Включайте мозг.
Я же уже сказал, что с точки зрения теории значения _обязаны_ повторяться.
Должны быть и повторения по 3 раза, и по 4, и по 5 раз.
Такова математика. А математика у нас что на ПР, что в умах учёных одна и та же.


И что с этим скрином не так?
Хотябы то что цифры не вяжутся в ПР и ПК ,поэтому и сказал сделайте для 180 отсчетов .
Про повторение подряд одних и тех же значений не понял - это что за спортоло такое -Такова математика - не устраивает меня ,ладно бы 0,1 ,а то 10,10,10,10 .....где ж тут белый шум

Сергей0308
18.07.2016, 17:47
Один-два цикла и покурить можно, не принимать новое значение, если равно преведущему!

rovki
18.07.2016, 17:49
Один-два цикла и покурить можно, не принимать новое значение, если равно преведущему!
Можно ,но это не соответствует канонам ВЫСШЕЙ МАТЕМАТИКЕ .;)

Владимир Ситников
18.07.2016, 17:51
Мне лично ничего не нужно ,мне хватало того что было .Вы сказали что это плохой макрос ,дали свой ,теперь я сравниваю(визуально) и не вижу большой разницы .
Да, шикарный тест. Если rovki не видит разницы, значит генераторы уж точно одинаковые.
Прямо можно на wikipedia добавлять статью "Критерий rovki-каскадова".


Для меня ,может я ошибаюсь -равновероятно имеет смысл только при большом количестве отсчетов (орел\орешка) ...
Не даром я вас спрашивал о задачах где может потребоваться RND для ПР,а вы отмахнулись .Так вот RND для ПР я использовал в некоторых игрушках - огни елки ,тренажер реакции оператора и еще несколько подобных проектах .А теперь подумайте стоило ли столько сил и нервов тратить для таких задач ,которые не критичны к тому что вас не устроило в старом макросе .
Может у вас есть другие применения ГСЧ для ПР,расскажите .То есть сначала ставится цель ,а потом выбирается оптимальный путь ,а не наоборот -один путь на все случаи жизни (цели)

О, шикарно. Как только на форуме появился готовый макрос, так rovki сразу стал отнекиваться со словами "ой, да это никому не нужно".
Опровергать ГСЧ примером "огни елки", это тоже шикарно.


Поясню ещё раз:
1) Генератор от AI (я про rnd1024) содержит столько элементов и переменных, что лучше на них вообще не смотреть. Память вместе со стеком в ПР кончится и всего делов. В схеме xorshift128 всего 5 xor'ов, 3 сдвига и 4 sel'а. Можно ли сделать проще? Можно. Нужно ли? Вряд ли.
2) Основная цель проекта xorshift128 для ПР была в поиске ошибок ОЛ. Эта цель на 100% достигнута.
3) Как бонус -- теперь есть быстрый и надёжный ГСЧ для ПР.

Владимир Ситников
18.07.2016, 18:12
Хотябы то что цифры не вяжутся в ПР и ПК ,поэтому и сказал сделайте для 180 отсчетов

Что вам сделать для 180 отсчётов?
Есть же ссылка. Берите, заменяйте 300 на 180 и всего делов.

Вот 180 отсчётов из random.org:


0 10
1 18
2 19
3 15
4 19
5 17
6 11
7 23
8 18
9 20
10 10


Вот ещё 180:


0 11
1 17
2 21
3 17
4 11
5 15
6 18
7 16
8 13
9 19
10 22



Про повторение подряд одних и тех же значений не понял - это что за спортоло такое -Такова математика - не устраивает меня ,ладно бы 0,1 ,а то 10,10,10,10 .....где ж тут белый шум

Поймите же, что ГСЧ на то и ГСЧ, что генерирует каждый раз новое случайное значение, которое в идеале не зависит от того, что он генерировал до этого.
Почему вы считаете, что "никак не должно быть 3 одинаковых подряд"?

В выборке из 180 элементов 178 троек (чисел, полученных подряд).
Вероятность того, что в 3 числах будут 10-ки ("10 10 10") равна 1/(11*11*11) == 0.0007513148009015778
Но самих пачек по 3 числа -- 178 штук. Т.е. в среднем, стоит ожидать 0.0007513148009015778 * 178 == 0.13.
Т.е. да, именно повторения трёх подряд 10-ок не ожидается много, но, если считать просто "3 подряд одинаковых", то ожидаемое количество будет уже 0.13*11 == 1.43

Иными словами, если ГСЧ хороший, то из 180 выборок от 0 до 10 включительно должно быть 1-2 случая, когда число повторяется 3 раза подряд.

Вот пример random.org:
https://www.random.org/integers/?num=180&min=0&max=10&col=1&base=10&format=html&rnd=new

Там запросто можно встретить 3 подряд одинаковых.

rovki
18.07.2016, 18:12
Во как выкрутился ,оказывается ошибки в ОЛ искал и по пути генератор сделал ....
Какой RND1024 это мы так баловались с теской .. остался только 1 RND ,что 4 элементах ,упростил называется.

rovki
18.07.2016, 18:47
А вот картинка для 0,1 угадайте где ваш белый шум ?

Владимир Ситников
18.07.2016, 18:57
Во как выкрутился ,оказывается ошибки в ОЛ искал и по пути генератор сделал ....
Какой RND1024 это мы так баловались с теской .. остался только 1 RND ,что 4 элементах ,упростил называется.

А не важно баловались или нет.
По факту, генератор AI во много раз сложнее чем простой xorshift128. Смысла в rnd1024 нет.

Можно ли сделать генератор проще, чем xorshift128? Можно. Нужно ли? Вряд ли. Алгоритм xorshift128 простой, легко проверяется, быстро выполняется, проходит статистические тесты.
Результат в симуляторе совпадает с результатом на ПК.

Вы бы лучше 10 первых значений (dword'ов) распечатали. Чтобы можно было сравнить правильно ли выполняется алгоритм в железе. Может, там ОЛ компилятор чудит.

AI!
18.07.2016, 19:01
Генератор от AI (я про rnd1024) содержит столько элементов и переменных, что лучше на них вообще не смотреть.а вы читали ТЗ которое стояло когда я начал его делать?
PS оно было озвучено ещё до варианта который назывался rnd64...
а сам RND - это всего 3-4 блока (уже не помню...)

UPD: нашел...

Специально для rovki и AI: нужен генератор случайных чисел 6-разрядный с контролем перебора всех комбинаций

rovki
18.07.2016, 19:20
Ну наконец то автор подошел ...;)

AI!
18.07.2016, 19:21
я сегодня на работу вышел... первый день...
устал с непривычки...

rovki
18.07.2016, 19:26
Потому что на форуме не тренировался давно;)
Что же ты такой плохой макрос сделал ,а я его несколько лет использовал и не знал ,что он не годится ???:D
Даже проекты делал -СПОРТЛОТО 5 из 36 ..Теперь понятно почему я не выиграл :D

Владимир Ситников
18.07.2016, 22:17
Оказалось, некоторым (даже "опытным (tm)"!) сложно превратить проект в файл. Вот уж чего не думал, того не думал.
Вот макрос: 25447

rovki
25.07.2016, 19:51
Надо просто всегда доделывать до конца ,что начал делать или не браться .Надо различать когда пишешь для себя и когда публикуешь на форуме .На форуме есть как опытные пользователи ,так и новички, поэтому что бы было доступно для всех доделай свой вариант до конца , что бы опытные могли проверить и принять или привнести свои поправки в готовый макрос (проект) ,а новички применить .