elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Foros Generales
| |-+  Foro Libre
| | |-+  ¿Cómo se pueden mezclar estas series numéricas?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Cómo se pueden mezclar estas series numéricas?  (Leído 660 veces)
Tachikomaia


Desconectado Desconectado

Mensajes: 1.245


Superhacker (es broma xD )


Ver Perfil
¿Cómo se pueden mezclar estas series numéricas?
« en: 4 Mayo 2024, 05:13 am »

Tengo 4 programas que producen 4 series distintas de números:

Negativos:
Produce una serie que tiene negativos: 0, 1, -1, 2, -2, etc.

Largos:
Produce cada vez más series, cada una con números más largos que las anteriores:
1era vuelta: 0
2nda: 1, 10
3era: 2, 11, 100
4ta: 3, 12, 101, 1000
etc. Cuando de una serie ya no se pueden producir más números con su largo, no se producen más de esa.

Decimales:
Similar al anterior, pero en vez de producir números enteros los hace más decimales:
1era vuelta: 1
2nda: 2, 0.1
3era: 3, 0.2, 0.01
4ta: 4, 0.3, 0.02, 0.001
etc. Cuando un número fuese a tener menos decimales que los de su serie, se produce el que sería siguiente. Ejemplo: Luego de 0.9 viene 1, pero ese no tiene un decimal, ergo se produce el que sería siguiente, 1.1.

Distantes:
Se define un número mínimo y uno máximo, pero por ahora sólo probé 0, positivos y enteros. Por ejemplo digamos que son 0 y 100.
Explicación con analogía:
Imaginen que 2 civilizaciones muy distantes, en una selva, en el espacio o algo así, se contactan. En el medio del camino que conecta una con otra, construyen una casa, estación o algo así. Luego, en el medio del camino que conecta eso con cada civilización, construyen otra cosa. Y así, siempre en el medio de 2 cosas, hasta que ya no hay espacio.
Ejemplo concreto:
Los números que se producen son los intermedios más distantes de los contiguos más distantes ya producidos. Por ahora los producidos son 0 y 100. El intermedio es 50. Ahora tenemos: 0, 50 y 100
Los intermedios son 25 y 75. ¿Cual es más distante a sus extremos? Ninguno:
La distancia de 25 a 0 es 25 y hasta 50 es 25.
La distancia de 75 a 50 es 25 y hasta 100 es 25.
Siendo así, se elige uno de esos al azar (o el menor, no importa mucho), supongamos que el 25. Ahora los intermedios van a ser: 12.5, 37.5 y 75. ¿Cual es más distante a sus extremos? El 75.
La distancia de 12.5 a 0 es 12.5 y a 25 también.
La distancia de 37.5 a 25 es 12.5 y a 50 también.
La distancia de 75 a 50 es 25 y a 100 también. Es la mayor.
Así sigue produciendo números hasta que produjo todos los enteros entre el mínimo y el máximo. Cuando el número intermedio es decimal, se cambia al entero más cercano, por azar u otros métodos.

Ahora ¡los quiero mezclar!  ;-)

"¿Para qué sirve esto?"
En teoría, para hallar más rápido números que cumplan ciertas condiciones.
Si la serie fuese 0, 1, 2... y necesitara negativos o  decimales, nunca hallaría un números que las cumpla. Si necesitara un decimal largo y usara el programa Negativos, tardaría mucho.

¿Pero cómo se pueden mezclar?

Largos + Negativos:
1era vuelta: 0, -0
2nda: 1, -1, 10, -10
3era: 2, -2, 11, -11, 100, -100
4ta: 3, -3, 12, -12, 101, -101, 1000, -1000
¿Se les ocurre otra forma?

Decimales + Negativos:
1era vuelta: 1, -1
2nda: 2, -2, 0.1, -0.1
3era: 3, -3, 0.2, -0.2, 0.01, -0.01
4ta: 4, -4, 0.3, -0.3, 0.02, -0.02, 0.001, -0.001
¿Otra forma?

¿Distantes + Negativos cómo podría ser?

¿Decimales + Largos?

¿Distantes + Largos?

¿Distantes + Decimales?

¿Dec + L + N?

¿Dist + L + N?

¿Dist + Dec + N?

¿Dist + Dec + L?

¿Los 4?

No los mezclo todos a la vez porque considero que me es complicado, voy practicando. Pensaré por mi cuenta pero ideas me pueden venir bien para no tener que rehacer cosas xP
En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.363


Ver Perfil
Re: ¿Cómo se pueden mezclar estas series numéricas?
« Respuesta #1 en: 4 Mayo 2024, 17:21 pm »

Ainsss...

Para qué necesitas esas series?. Sería más fácil indicar que para qué necesitas una serie de números (qué vas a hacer con ellas?) e indicarte como generarla, que avanzar por tí mismo complicando cosas innecesariamente y luego pedir que te ayuden a terminar donde te atascaste.

Y por qué lo primero ha de ser preferible a lo segundo?.
Porque desde el primer punto, puede ser más eficiente.
Ser eficiente en lo segundo, cuando en lo primero es deficiente, no ayuda mucho.

Si buscas cómo generar determinadas series, puedes recurrir a la página OEIS, https://oeis.org/ que es un sitio que recoge más de 1/3 millón de series.

Todo lo que tienes que hacer es poner en la cajita de texto, los primeros números de la serie a buscar separado por comas. Nota que las páginas que describen una serie, suele tener un enlace en la forma: A00numero, por ejemplo A008619 (que es una serie que genera los números enteros repetido 2 veces); https://oeis.org/A008619
Una vez, en la página de la serie que quieres revisar, al menos debes bajar hasta el apartado: 'Formula'. Que es donde se descibe una o más funciones generadores para reproducir la serie.
Es fácil que en la documentación de la secuencia entrada haya una descripción que lleve a series (incluso) distintas, pero de alguna forma relacionada, sea por la propia serie, sea por un autor, etc... es decir tendrás que leer un poquito sí o sí.

Nota sin embargo que a veces más de una serie comparten x números de la serie, así que de ser el caso, hay que poner más números, o bien revisar las diferentes series hasta que localices la que opere como exactamente quieres tú (si existe).

...y como algunas de las 'series' que señalas, parecen simplemente antojosas, es decir no hay una formulación matemática referente (como esa de números decimales), eso implica que posiblemente no aparezca porque es una 'serie particular tuya', y difícilmente nadie más vaya nunca a necesitar usar una serie así, razón por la que nadie antes la haya buscado y documentado (en realidad más bien esto último).

La primera de las series (yo la conozco como la 'serie Euler', pero esto es muy relativo), se genera de varias maneras una de ellas es:
Código:
bucle para n desde 1 a x
  imprimir (Int(n / 2) + (n And 1)) * (((n And 1) * 2) - 1)
siguiente
También puedes hacerla con un código más fácil de comprender.
Código:
bucle para n desde 1 a x
    Si (n es par)
        imprimir (-n \ 2)   // (n * -1) \ 2)
    si no
        imprimir ((n +1) \ 2)
    fin si
siguiente
Nota la división entera '\'

Respecto de unificar valores de varias listas en una sola, lo mejor es ponerlas una a continuación de las otras, y al final barajar la lista final. Sean estas 3 supuestas series: (11, 28, 42), (123, 965, 87, 44), (20, 60, 200)... pues las pones de corrido en una sola lista:
(11, 28, 42, 123, 965, 87, 44, 20, 60, 200)
Y finalmente las barajas :
Código:
bucle para k desde cantidad-1 hasta 1 regresivamente
   tmp = random(entre k y 0)
   valor = lista(k)
   lista(k) = lista(tmp)
   lista(tmp)= valor
siguiente

Y ya los tienes desordenados...
Ése es el 'Algoritmo de Fisher-Yates' y Durstenfeld.
https://es.wikipedia.org/wiki/Algoritmo_de_Fisher-Yates

« Última modificación: 4 Mayo 2024, 17:24 pm por Serapis » En línea

Tachikomaia


Desconectado Desconectado

Mensajes: 1.245


Superhacker (es broma xD )


Ver Perfil
Re: ¿Cómo se pueden mezclar estas series numéricas?
« Respuesta #2 en: 5 Mayo 2024, 05:07 am »

Para qué necesitas esas series?
Es difícil de explicar, y además no es que las necesite sino que siento que me podrían ser útiles algún día, además de que me agrada practicar sobre esto.

Me interesa la búsqueda mediante fuerza bruta y como expliqué es bueno que los candidatos varíen mucho rápido en vez de estar probando similares 1ero.
También me interesa saber cuales son las posibles competencias en juegos, para lo cual requiero saber qué cosas son contables en ellos, sus variables, y números obtenibles a partir de eso. Eso último hace ya tiempo que no lo pienso, es como... lo que pondría en el 2ndo piso de una casa, pero aún estoy en la base, no estoy pensando en lo siguiente, así que no me acuerdo bien del tema, pero, ponele que te digo: "Esta competencia es pasarse X juego de modo que el caracter número (caracter más grande de tu Puntaje) de tu Puntaje sea el más grande posible", para mí no es fácil entender qué significa eso, ni si se puede decir de forma más clara, pero eso es sólo un ejemplo, aquí hay más sencillos:

El 1ero, ponele que te dijesen "Esta competencia es pasarse el juego de modo que la longitud del número de enemigos que venciste sea 3" (es una pavada, pero es una posibilidad que me puede servir para ver otras). Es obvio que necesitas vencer de 100 a 999 enemigos, en ejemplo dice 234. Bueno, pero los números que cumplen las condiciones no siempre son tan obvios, a veces ni siquiera se entienden bien las condiciones, así que estoy haciendo un "buscador de Ns" que busque un número por cada condición que le diga, a ver si tienen sentido o no...
Más o menos es eso.

Lo que busco es algo parecido a generar series de números muy distintos entre sí, es útil en general, no tiene un fin específico, o sea, si se supiera mucho sobre cuales son los Ns o candidatos que cumplen las condiciones, no sería necesario probar muchos, ni hacer una serie... Esto es más bien para cuando no se tiene idea de cómo es el número que se busca. En los juegos no suele haber números decimales visibles pero si haces promedios de variables por ejemplo puede surgir uno.

Tu solución está bien para los datos que di, no supuse que debiera decir más, pero como expliqué esto seria para encontrar números que cumplan ciertas condiciones así que no sería eficiente generar una lista, luego otra, mezclar el resultado al azar, y luego recién empezar a ver qué número de esos cumple la condición; la idea es chequearlos de inmediato, mientras se genera la serie.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Calculo de algoritmos en series numéricas
Foro Libre
seriesnumericas 7 10,897 Último mensaje 4 Febrero 2011, 16:48 pm
por flony
Series numericas en c++
Programación C/C++
Exorcista12 7 22,389 Último mensaje 15 Noviembre 2013, 06:39 am
por Exorcista12
¿Como se llaman estas series?
Foro Libre
abdell 3 2,115 Último mensaje 24 Febrero 2017, 02:35 am
por A.I.
¿Se pueden mezclar módulos de RAM de distinto tamaño y velocidad?
Noticias
wolfbcn 0 957 Último mensaje 13 Marzo 2017, 17:58 pm
por wolfbcn
Ayuda para generar series numéricas al azar
Java
yonathan 1 2,464 Último mensaje 17 Enero 2018, 04:34 am
por srWhiteSkull
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines