알고리즘 최적화. - 페이지 3

 
joo :

섹터의 너비는 배열의 값과 일치할 수 없습니다. 그렇지 않으면 알고리즘이 숫자에 대해 작동하지 않습니다.

숫자 사이의 거리가 중요합니다. 모든 숫자가 첫 번째 숫자에서 멀수록 떨어질 가능성이 적습니다. 사실, 우리는 숫자 사이의 거리에 비례하는 숫자의 직선 부분을 따로 설정하고 0.01의 비율로 조정하여 마지막 숫자가 첫 번째 숫자에서 가장 멀리 떨어져 있을 때 0과 같지 않은 확률을 갖도록 합니다. 계수가 높을수록 섹터가 더 평등합니다. 첨부된 엑셀파일, 실험.

1. 이론적 확률의 계산은 Excel로 제공됩니다. 첫 번째 숫자는 가장 높은 확률이고 마지막 숫자는 가장 낮은 확률이지만 0이 아닙니다.

2. 음수 섹터 크기는 집합이 내림차순으로 정렬된 경우 숫자 집합에 대해 발생하지 않습니다. 첫 번째 숫자가 가장 큽니다(집합에서 가장 큰 숫자와 작동하지만 음수임).

나는 이해하지 못했지만 핵심 문구로 표현된 확률 이론에 대한 당신의 접근 방식이 이미 마음에 듭니다. "숫자들 사이의 거리가 중요합니다. 모든 숫자가 첫 번째 숫자에서 멀수록 to fall out ..." 및 두 배(컨트롤 샷): "단순히 배열의 요소를 무작위로 선택하는 것을 제안합니까? - 이렇게 하면 배열 번호 사이의 거리가 고려되지 않으므로 옵션은 쓸모가 없습니다.".! 논리적 질문: 두뇌 제거는 프로그램 작성 논리를 연마하기 위한 필수 연습입니까? 아마 나는 아마추어 코더로 더 잘 남을 것입니다. 건강에 더 유용합니다.

그리고 확률 이론과 친구라면 룰렛의 논리는 0에서 36 사이의 난수 생성기입니다(룰렛이 일반, 유럽인 경우 이중 0과 같은 미국 문제가 없는 경우. .).

 
Wangelys :

나는 이해하지 못했지만 핵심 문구로 표현된 확률 이론에 대한 당신의 접근 방식이 이미 마음에 듭니다. to fall out ..." 및 두 배(컨트롤 샷): "단순히 배열의 요소를 무작위로 선택하는 것을 제안합니까? - 이렇게 하면 배열 번호 사이의 거리가 고려되지 않으므로 옵션은 쓸모가 없습니다.".! 논리적 질문: 두뇌 제거는 프로그램 작성 논리를 연마하기 위한 필수 연습입니까? 아마 나는 아마추어 코더로 더 잘 남을 것입니다. 건강에 더 유용합니다.

그리고 확률 이론과 친구라면 룰렛의 논리는 0에서 36 사이의 난수 생성기입니다(룰렛이 일반, 유럽인 경우 이중 0과 같은 미국 문제가 없는 경우. .).

사실, 카지노 룰렛은 이 스레드에서 적어도 세 사람이 이미 빠졌다는 은유에 불과합니다.

 
joo :

사실, 카지노 룰렛은 이 스레드에서 적어도 세 사람이 이미 빠졌다는 은유에 불과합니다.

- 예, 예, 모든 것을 이해합니다! 이소피아 언어!

죄송합니다. 어디서 못 들었나요?

 
Wangelys :

- 예, 예, 모든 것을 이해합니다! 이소피아 언어!

죄송합니다. 어디서 못 들었나요?

로버트 셰클리?
 
joo :

섹터의 너비는 배열의 값과 일치할 수 없습니다. 그렇지 않으면 알고리즘이 숫자에 대해 작동하지 않습니다.

숫자 사이의 거리가 중요합니다. 모든 숫자가 첫 번째 숫자에서 멀수록 떨어질 가능성이 적습니다. 사실, 우리는 숫자 사이의 거리에 비례하는 숫자의 직선 부분을 따로 설정하고 0.01의 비율로 조정하여 마지막 숫자가 첫 번째 숫자에서 가장 멀리 떨어져 있을 때 0과 같지 않은 확률을 갖도록 합니다. 계수가 높을수록 섹터가 더 평등합니다. 첨부된 엑셀파일, 실험.

1. 이론적 확률의 계산은 Excel로 제공됩니다. 첫 번째 숫자는 가장 높은 확률이고 마지막 숫자는 가장 낮은 확률이지만 0이 아닙니다.

2. 음수 섹터 크기는 집합이 내림차순으로 정렬된 경우 숫자 집합에 대해 발생하지 않습니다. 첫 번째 숫자가 가장 큽니다(집합에서 가장 큰 숫자와 작동하지만 음수임).

이것은 IMHO의 진정한 진술이 아닙니다.

имеем массив
 double a[ 10 ]={ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 };
какова вероятность выпадения каждого?
 55 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 ;
 double b[ 10 ]={ 1 / 55 , 2 / 55 , 3 / 55 , 4 / 55 , 5 / 55 , 6 / 55 , 7 / 55 , 8 / 55 , 9 / 55 , 10 / 55 };
те вероятность выпадения [ 0 ] в 10 раз меньше чем [ 9 ].
теперь разметим массив где эти вероятности будут отображены
 double с[ 10 ]={ 1 , 3 , 6 , 10 , 15 , 21 , 28 , 36 , 45 , 55 };
теперь при выпадении чисел от 1 до 55 , если ранд 55 <= c[x], то имеем нужный индекс.
для того чтоб работало и для отрицательных чисел нужно сдвинуть значения на 1 -с[ 0 ].

теперь посмотрим изменяться ли вероятности при изменении чисел...
 double a[ 10 ]={ 2 , 4 , 6 , 8 , 10 , 12 , 14 , 16 , 18 , 20 };
какова вероятность выпадения каждого?
 110 = 2 + 4 + 6 + 8 + 10 + 12 + 14 + 16 + 18 + 20 ;
 2 / 110 == 1 / 55
 double b[ 10 ]={ 1 / 55 , 2 / 55 , 3 / 55 , 4 / 55 , 5 / 55 , 6 / 55 , 7 / 55 , 8 / 55 , 9 / 55 , 10 / 55 };
те вероятность выпадения [ 0 ] в 10 раз меньше чем [ 9 ], 
вероятность выпадения не изменилась, 
т.к. она измеряется относительно среднего рассчитанного по всему массиву.

 

둘째, []를 사용한 확률적 배열의 계산은 epoch당 한 번 필요하므로 함수를 RoletEpoh()와 RoletRand()로 나누어야 합니다.

주현이가 처음에 얘기했는데도 말이다.

그러나 가속도 자체는 c[] 배열에서 드롭된 값을 검색해야만 얻을 수 있습니다.

표준 성경, 즉 빠른 검색 방법이 여기에 도움이 될 수 있습니다.

그리고 MQL5의 스프레드시트 기사에서 재작업된 방법을 사용하는 것이 좋습니다.

ZY 요점은 기사가 내림차순으로 정렬된 배열을 검색하는 방법을 적용한 반면 표준에서는 오름차순으로만 검색한다는 것입니다(오름차순으로만(아마도 내가 오랫동안 착각하고 있었던 것 같습니다) .

 
joo :
로버트 셰클리?
아니요, 조금 더 쉽습니다. 오데사의 Privoz도 있지만 Sheckley도 사랑합니다(거의 세켈을 썼습니다). 그러나 이 스레드의 모든 참가자는 다음 은유를 "잡았습니다":
:
나는 알고리즘 논리의 최적 구성의 문제를 논의하기 위해 여기에서 제안합니다.
-여기서 일어나는 일은 "알고리즘 논리의 최적 구성"이라는 작업의 공식화에 속할 가능성이 낮기 때문에 - 코딩 방법과 기술을 개선하는 것과 더 비슷합니다... 아니면 제가 틀렸나요?
 
Wangelys :
"알고리즘 논리의 최적 구성" 작업 - 코딩 방법과 기술을 개선하는 것과 비슷합니다... 아니면 제가 틀렸나요?

일반 스레드:

"누군가 자신의 알고리즘이 속도(또는 가시성) 면에서 최적의 논리를 가지고 있다고 의심한다면 환영합니다."

특히, 내 작업은 "... 더 빠른 옵션을 제안하십시오 ..."였습니다. 더 빨리! 나는 내 알고리즘이 옳다고 생각하는지 여부를 묻지 않았습니다. 이 경우에는 더 빨라야 합니다. 즉, 누군가가 다른 버전의 알고리즘을 제공하는 경우 다른 버전이 아닌 나와 똑같은 결과를 제공해야 합니다. 그리고 웬일인지 모든 사람들은 자신의 무언가에 대해 생각하기 시작했습니다.


좋아, 가속 문제가 해결되었습니다. :)

 
Wangelys :

- 예, 예, 모든 것을 이해합니다! 이소피아 언어!

죄송합니다. 어디서 못 들었나요?

그것은 유전 알고리즘 에서 나온 것입니다.
Генетические алгоритмы - это просто!
Генетические алгоритмы - это просто!
  • 2010.05.25
  • Andrey Dik
  • www.mql5.com
В статье автор расскажет об эволюционных вычислениях с использованием генетического алгоритма собственной реализации. Будет показано на примерах функционирование алгоритма, даны практические рекомендации по его использованию.
 
이제 문제가 있습니다. 요소를 복사하는 데 많은 "비용"이 드는 배열을 효율적으로 정렬하는 것이 필요합니다(즉, 요소가 방대하고 "무거운" 구조, 클래스 개체 , 긴 문자열 등). 상식에 따르면 그것들을 제자리에 두고 대신 일종의 포인터(원래 위치의 셀 인덱스)로 정렬해야 합니다. 여기에서 추가 인용: https://www.mql5.com/en/forum/6476#comment_178318
Если прямо тут перевести в подобие "техзадания" , то нужна функция, на вход берущая массив и возвращающая 
второй массив ( int ), элементы которого являются индексами элементов входного массива, расположенными 
по убыванию (возрастанию).

В идеальном случае сделать перегрузки для всех стандартных типов + CObject (при обязательном требовании
к реализации функции Compare() у наследников CObject).  Хотелось бы и для структур, но похоже на стороне
разработчика никак не решаемо - виртуальных функций у структур нет (и не надо!), т.е. юзерскую функцию
Compare() не пришить, а "стандартное" отношение порядка для структур, естественно, не определено.  
수많은 현재 작업으로 존경받는 터미널 개발자에게 맡기고 mql5에서 구현합시다.