Optimización de algoritmos. - página 3

 
joo:

La anchura de los sectores no puede coincidir con los valores de la matriz, de lo contrario el algoritmo no funcionará para todos los números.

Lo que importa es la distancia que separa los números. Cuanto más separados estén todos los números del primero, menos probabilidades habrá de que se caigan. En esencia, posponemos en una línea recta barras proporcionales a la distancia entre los números, ajustada por un factor de 0,01, de modo que el último número la probabilidad de caer fuera no era igual a 0 como el más lejano de la primera. Cuanto más alto es el coeficiente, más iguales son los sectores. Se adjunta el archivo excel, experimenta con él.

1. El cálculo de las probabilidades teóricas se recoge en el excel. El primer número es la mayor probabilidad, el último número es la menor probabilidad, pero no es igual a 0.

2) Los tamaños negativos de los sectores nunca ocurren para cualquier conjunto de números, siempre que el conjunto esté ordenado en forma descendente - el primer número es el más grande (funcionará con el más grande del conjunto pero con número negativo).

No lo entiendo, pero ya me gusta su enfoque de la teoría de la probabilidad, expresado en una frase clave: "Es importante la distancia a la que se encuentran los números". Cuanto más alejados estén todos los números del primero, menos probabilidades habrá de que se caigan..." y toma dos (toma de control): "¿Sugieres escoger un elemento de la matriz al azar? - No tiene en cuenta las distancias entre los números de las matrices, por lo que su forma es inútil". Pregunta legítima: ¿Es el lavado de cerebro un ejercicio obligatorio para perfeccionar la lógica de la escritura de programas? Mejor me quedo como codificador diletante, es mejor para mi salud.

Y si eres bueno con la teoría de la probabilidad, entonces la lógica de la ruleta - un generador de números aleatorios en el rango de 0 a 36 (si la ruleta es convencional, europea, sin el doble cero al estilo americano, etc...).

 
Wangelys:

No lo entiendo, pero ya me gusta su enfoque de la teoría de la probabilidad, expresado en la frase clave: "La distancia entre los números importa". Cuanto más lejos estén todos los números del primero, menos probabilidades habrá de que caigan..." y toma dos (toma de control): "¿Propones seleccionar simplemente un elemento de la matriz al azar? - No tiene en cuenta las distancias entre los números de las matrices, por lo que su forma es inútil". Pregunta legítima: ¿Es el lavado de cerebro un ejercicio obligatorio para perfeccionar la lógica de la escritura de programas? Mejor me quedo como codificador diletante, es mejor para mi salud.

Y si eres bueno con la teoría de la probabilidad, la lógica de la ruleta - un generador de números aleatorios en un rango de 0 a 36 (si la ruleta europea regular, sin el doble cero de estilo americano, etc ...).

En realidad, la ruleta del casino no es más que una metáfora, en la que ya han caído al menos tres personas en este hilo.

 
joo:

En realidad, la ruleta del casino no es más que una metáfora en la que ya han caído al menos tres personas en este hilo.

- ¡Sí, sí, lo entiendo! ¡Lenguaje de Esopo!

- Lo siento, ¿de dónde es eso?

 
Wangelys:

- ¡Sí, sí, lo tengo! ¡Lenguaje de Esopo!

- Lo siento, no lo he pillado, ¿de dónde era?

¿Robert Sheckley?
 
joo:

La anchura de los sectores no puede coincidir con los valores de la matriz, de lo contrario el algoritmo no funcionará para todos los números.

Lo que importa es la distancia que separa los números. Cuanto más separados estén todos los números del primero, menos probabilidades habrá de que se caigan. En esencia, posponemos en una línea recta barras proporcionales a la distancia entre los números, ajustada por un factor de 0,01, de modo que el último número la probabilidad de caer fuera no era igual a 0 como el más lejano de la primera. Cuanto más alto es el coeficiente, más iguales son los sectores. Se adjunta el archivo excel, experimenta con él.

1. El cálculo de las probabilidades teóricas se recoge en el excel. El primer número es la mayor probabilidad, el último número es la menor probabilidad, pero no es igual a 0.

2) Los tamaños de sector negativos nunca ocurren para cualquier conjunto de números, siempre y cuando el conjunto esté ordenado en forma descendente - el primer número es el más grande (también funcionará con el más grande del conjunto pero un número negativo).

Esta afirmación no es correcta, en mi opinión.

имеем массив
 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], 
вероятность выпадения не изменилась, 
т.к. она измеряется относительно среднего рассчитанного по всему массиву.

 

En segundo lugar, el cálculo de la matriz de probabilidad con[] se necesita una vez por época, por lo que deberíamos dividir la función en RoletteEpoh() y RoletteRand().

aunque Joo lo mencionó al principio.

pero se puede obtener el aumento de velocidad en sí buscando el valor caído en el array c[].

Puede utilizar la bibliografía estándar, es decir, los métodos de búsqueda rápida.

Y es mejor que tomes sus métodos reelaborados del artículo Hojas de cálculo en MQL5

Si quieres hacer una búsqueda rápida de arrays ordenados con valores no listados, utiliza el método de búsqueda en mayúsculas en lugar del estándar (puede que me equivoque, hace tiempo que no miro el estándar).

 
joo:
¿Robert Shackley?
No, un poco más simple - Privoz en Odessa, aunque me encanta Shackley (casi deletreado shekels) también. Pero su siguiente metáfora "consiguió" todos los participantes en esta rama:
joo:
Sugiero que discutamos aquí los problemas de la construcción de la lógica del algoritmo óptimo
-porque lo que ocurre aquí difícilmente entra en el enunciado del problema de la "construcción óptima de la lógica de los algoritmos" -se trata más bien de la mejora de los métodos y técnicas de codificación... ¿o me equivoco?
 
Wangelys:
Los problemas de "construcción óptima de la lógica del algoritmo" - es más bien la mejora de los métodos y técnicas de codificación... ¿o me equivoco?

Un hilo de carácter general:

"Si alguien duda de que su algoritmo tiene una lógica óptima en términos de velocidad (o claridad), es bienvenido".

Y específicamente mi tarea era "...por favor sugiera una variante más rápida...". ¡Más rápido! No pregunto si mi algoritmo está bien o mal, en este caso sólo necesito más rapidez, es decir, si alguien propone otra variante del algoritmo, debe producir el mismo resultado que el mío y no otro. Y por alguna razón cada uno empezó a pensar en lo suyo.


Bien, mi tarea de aceler ar ha sido resuelta. :)

 
Wangelys:

- ¡Sí, sí, lo tengo! ¡Lenguaje de Esopo!

- Lo siento, no lo he pillado, ¿de dónde era?

Es de algoritmos genéticos.
Генетические алгоритмы - это просто!
Генетические алгоритмы - это просто!
  • 2010.05.25
  • Andrey Dik
  • www.mql5.com
В статье автор расскажет об эволюционных вычислениях с использованием генетического алгоритма собственной реализации. Будет показано на примерах функционирование алгоритма, даны практические рекомендации по его использованию.
 
Ahora tengo un problema. Necesito hacer una ordenación efectiva de arrays con gran "coste" de copia de elementos (es decir, elementos de los cuales son estructuras voluminosas, "pesadas", objetos de clase, cadenas largas, etc.). El sentido común sugiere que deberíamos dejarlos en su sitio, pero ordenar en su lugar por algún tipo de punteros - índices de celdas de su ubicación original. Aquí hay una cita de aquí :https://www.mql5.com/ru/forum/6476#comment_178318
Если прямо тут перевести в подобие "техзадания", то нужна функция, на вход берущая массив и возвращающая 
второй массив (int), элементы которого являются индексами элементов входного массива, расположенными 
по убыванию (возрастанию).

В идеальном случае сделать перегрузки для всех стандартных типов + CObject (при обязательном требовании
к реализации функции Compare() у наследников CObject).  Хотелось бы и для структур, но похоже на стороне
разработчика никак не решаемо - виртуальных функций у структур нет (и не надо!), т.е. юзерскую функцию
Compare() не пришить, а "стандартное" отношение порядка для структур, естественно, не определено.  
Dejemos a los respetables desarrolladores de terminales con sus numerosas tareas actuales por ahora, e implementémoslo en mql5.
Razón de la queja: