| |||
crear este tipo de algoritmo en php Hola, no encuentro la logica para seguir para crear este algorismo, trata de selecionar un numero del 000 al 100 de forma aleatoria pero que no este en otra tabla, necestio que que puedan salir numeros como estos 000,001 hasta el 100, alguna idea ya que no encuentro la logica, saludos. |
| |||
Respuesta: crear este tipo de algoritmo en php Hola gnzsoloyo, una pregunta bueno primero gracias por tu ayuda, mientras obtengo el numero aleatorio por ejemplo con round(rand()*100) por ejemplo y luego compruebo que ese numero no esta en una tabla supongamos que me extrae 99 numero aleatorio tendria que comprobar 99 veces ese numero en la tabla, creo que mi replanteamiento no esta bien. que soluciones tengo?saludos |
| ||||
Respuesta: crear este tipo de algoritmo en php Tu preguntaste por algoritmo, no por programación. No es lo mismo. Cuando hablas de algoritmia estás planteando cuál es la logica a cumplir, que está más allá de los lenguajes. Pero cuando hablas de optimizar una busqueda programáticamente, estás preguntando por los recursos de cada lenguaje, y alli te diré que si la tabla está en la base, es una consulta a ella, mientras que si la tabla es parte de la página, necesitas otros recursos, y si la tabla es un array de PHP, entonces debes usar los métodos que existan en esa clase. ¿Se entiende? No confundas lógica con implementación.
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |
| |||
Respuesta: crear este tipo de algoritmo en php gnzsoloyo me referia que una vez creada la logica tendria ese problema de recursos en el servidor, creo que optare por guardar los numeros en una tabla, gracias por tu ayuda, saludos. |
| ||||
Respuesta: crear este tipo de algoritmo en php Genera un array con todos los elementos posibles. Elmina todos los que están en la tabla. Coge uno al azar de los restantes. |
| ||||
Respuesta: crear este tipo de algoritmo en php Cita: Insisto: No confundas lógica con impementación. No necesariamente esos numeros deben guardarse. Bien podría ser que adminsitrados dinámicamente sea igual o mejor para la aplicación.No siemrpe las cosas son Blanco/Negro. Empecemos por el principio: ¿En qué forma está esa "tabla" de datos contra los que se validará? ¿En la base? ¿En la vista? ¿En un objeto de PHP? Posdata: La solución de dastrash es funcional si la cantiadd de numeros posibles es acotada. Si se eleva... podrrías terminar con problemas de performance.
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |
| |||
Respuesta: crear este tipo de algoritmo en php Hola gnzsoloyo, realmente no tengo tablas creada todavia solo quiero saber como seria la mejor forma de crear eso obtener numeros aleatorios en un rango y insertarlos en una tabla para que no se repitan. Que opcion me das no consigo tenerlo claro, cualquier ayuda me va bien, saludos. |
| |||
Respuesta: crear este tipo de algoritmo en php ummm, mira yo te doy un manera de hacerlo, simple, pero puedes encontrar 1000, sin tabla (tabla de base de datos , me refiero :) ) Te hago un ejemplo con 10 números. Digamos que tengo estos números , tu pon los que quieras. En un array o dónde tu quieras. 21-22-23-24-25-26-27-28-29-30 Genero un número aleatorio del tamaño del array, solo tengo 10 posiciones en el array (de 0-9 en algunos lenguajes) Como tengo 10 numeros genero un número "ramdon de 10" , te da el 6 . Cuento la posición 6 que no esté vacia. 1 -2 -3 -4 -5 -6 21-22-23-24-25-26-27-28-29-30 Cojo el número que me da , el 26. Vacio ese campo , para que no se repita, o reescribo el array, como quieras. yo lo voy a vaciar. ahora tengo un array de 10 posiciones con 9 valores. 1 -2 -3 -4 -5 -6 -7 -8 - 9 - 10 21-22-23-24-25- -27-28-29-30 Vuelvo a generar un número ramdon , o bien ramdom de 10 y del último vuelvo al primero de la fila, o bien de del tamaño del array menos las posiciones vacias. , o menos los numeros que he sacado. El ramdom me da 2, cojo el número 22 y lo vacio 1 -2 -3 -4 -5 -6 -7 -8 - 9 - 10 21-22-23-24-25- -27-28-29-30 Quedará asi: 1 -2 -3 -4 -5 -6 -7 -8 - 9 - 10 21- -23-24-25- -27-28-29-30 Vuelvo a generar otro ramdon , ya he dicho que no iba a contar los huecos vacios. El ramdom me da 3 cojo el numero 24 (el 2 no cuenta porque está vacio...) 1 -2 -3 -4 -5 -6 -7 -8 - 9 - 10 21- -23-24-25- -27-28-29-30 Vaya peli,bueno como verás hay muchas maneras de hacerlo, esta es una , ni si quiera creo que sea la más optima, quedaría mejor modificando el array en cada estracción y haciendo un ramdom del tamaño del nuevo array, ... pero es una solución suerte! |
| |||
Respuesta: crear este tipo de algoritmo en php A ver si entendi, aca estaria la logica, vos adaptalo. Código PHP: |
| ||||
Respuesta: crear este tipo de algoritmo en php El tema es bastante mas complejo de lo que parece a simple vista. Porque si solo tienes 100 números, te sirve cualquier solución, pero si tienes varios miles de millones no hay server que se banque verificar tanta cantidad de forma constante y menos aun levantarlos a memoria en un array. Hace unos días tuve el mismo problema y allí publique la solución. Si bien me sugirieron varias alternativas como la de @dashtrash o la de @darioPHP ninguna es viable. En mi caso necesitaba una combinación de 15 números aleatorios del 0 al 99 que no estuviera previamente generada. Notese en mi solucion que el 15 va como parámetro, así que si necesitas menos cantidad, solo tienes que cambiar ese parámetro. La primer solucion que planteo en ese tema no necesita mas que un campo autoincremental en la base de datos para funcionar, la segunda que esta mejorada, requiere un par de detalles adicionales. Saludos! Última edición por NSD; 04/03/2015 a las 08:08 |
| ||||
Respuesta: crear este tipo de algoritmo en php Cita: Porque el tuyo era otro problema.Estamos hablando de 100.Para miles de millones, o lo que sea, necesitas una forma de mapear el rango de soluciones posibles a un conjunto de indices, de forma que a un solo indice responde 1 sola solución.Y después, encontrar una forma de recubrir sin repetición el espacio de indices (numeros primos, etc).Si tengo un espacio de 1000000 de posibles soluciones, ¿hay alguna forma de mapear un numero (ej, 5000) a una solución concreta? (usando representación binaria, árboles, números pseudoaleatorios, etc)...En fin, muchas formas. Pero, para un espacio de 100 soluciones? No hay que liarse. |
| ||||
Respuesta: crear este tipo de algoritmo en php Cita: Tranquilo @dashtrash.
Iniciado por dashtrash Porque el tuyo era otro problema.Estamos hablando de 100.Para miles de millones, o lo que sea, necesitas una forma de mapear el rango de soluciones posibles a un conjunto de indices, de forma que a un solo indice responde 1 sola solución.Y después, encontrar una forma de recubrir sin repetición el espacio de indices (numeros primos, etc). Si tengo un espacio de 1000000 de posibles soluciones, ¿hay alguna forma de mapear un numero (ej, 5000) a una solución concreta? (usando representación binaria, árboles, números pseudoaleatorios, etc)...En fin, muchas formas. Pero, para un espacio de 100 soluciones? No hay que liarse. No pretendía ofenderte. De hecho lo aclare: Cita: El problema que tuve (el cual por cierto ya esta solucionado) lo publique porque la solución resuelve a este perfectamente como caso particular, funciona tanto para 100 números como para 253338471349989000 (la cantidad exacta de mi problema). Porque si solo tienes 100 números, te sirve cualquier solución Última edición por NSD; 04/03/2015 a las 09:50 Razón: Ortografia |
| ||||
Respuesta: crear este tipo de algoritmo en php Cita: Nah, no me sentia ofendido.
Iniciado por NSD Tranquilo @dashtrash. No pretendía ofenderte. De hecho lo aclare: El problema que tuve (el cual por cierto ya esta solucionado) lo publique porque la solución resuelve a este perfectamente como caso particular, funciona tanto para 100 números como para 253338471349989000 (la cantidad exacta de mi problema). Pero si que querias que entendieras la respuesta.Pero eso me ha llevado a ver tu solución, la cual es tan dependiente del nímero de elementos, como otra.No funciona igual de bien con 100 que con 20mil millones.Tu solución confía en 2 cosas: -1) El espacio de soluciones es muy grande -2) El número de combinaciones a dar es un número muy inferior al tamaño del espacio de soluciones Vamos, que de 2 mil millones, vas a sacar 100 cartones. Y si presupones 1 y 2, puedes hacer cosas como guardar las soluciones anteriores, etc. Pero si fueras a hacer 99.999.999 extracciones de 100.000.000 de elementos, cuanto costaría todo eso? Lee mi respuesta que dí antes.Hay que mapear el espacio de soluciones, en un espacio de indices, como una aplicación a <-> b . Data una solución, solo puede tener un indice.Dado 1 indice, solo puede haber 1 solución.Luego, encontrar un medio de recubrir el espacio de índices, que es mucho más fácil que intentar recubrir el espacio de soluciones.Y esto es muy dependiente de las soluciones, del coste de calcularlas, etc |
| ||||
Respuesta: crear este tipo de algoritmo en php Cita: Puede ser, pero 99.999.999 extracciones de 100.000.000 no es mi problema ni el de este hilo
Iniciado por dashtrash Nah, no me sentia ofendido. Pero si que querias que entendieras la respuesta.Pero eso me ha llevado a ver tu solución, la cual es tan dependiente del nímero de elementos, como otra.No funciona igual de bien con 100 que con 20mil millones.Tu solución confía en 2 cosas: -1) El espacio de soluciones es muy grande -2) El número de combinaciones a dar es un número muy inferior al tamaño del espacio de soluciones Vamos, que de 2 mil millones, vas a sacar 100 cartones. Y si presupones 1 y 2, puedes hacer cosas como guardar las soluciones anteriores, etc. Pero si fueras a hacer 99.999.999 extracciones de 100.000.000 de elementos, cuanto costaría todo eso? Lee mi respuesta que dí antes.Hay que mapear el espacio de soluciones, en un espacio de indices, como una aplicación a <-> b . Data una solución, solo puede tener un indice.Dado 1 indice, solo puede haber 1 solución.Luego, encontrar un medio de recubrir el espacio de índices, que es mucho más fácil que intentar recubrir el espacio de soluciones.Y esto es muy dependiente de las soluciones, del coste de calcularlas, etc En el caso del problema de este tema el espacio de soluciones es muy pequeño (100 valores) y funciona perfectamente:
Código PHP:
Ver original Si quieres seguir charlando sobre como mejorar el algoritmo para que funcione para cualquier caso (incluido el que tu propones) te invito a que lo sigamos en el otro hilo ya que aca poco tiene que ver con el problema original. |
| ||||
Respuesta: crear este tipo de algoritmo en php Cita:
Iniciado por NSD Si bien me sugirieron varias alternativas como la de @dashtrash o la de @darioPHP ninguna es viable. Cita: O si...o no...
Iniciado por NSD Porque si solo tienes 100 números, te sirve cualquier solución, Cita: Cita: O resuelve los casos..o no los resuelve...Y para rematar, sieeeempre tiene que saltar uno que aporta... Cita: Qué foro...
Iniciado por hhs Jejeje que divertido, hasta parecen niños Última edición por dashtrash; 05/03/2015 a las 17:33 |
| ||||
Respuesta: crear este tipo de algoritmo en php @dashtrash para aclarar algunas cosas que pareciera no hablamos el mismo idioma: 1) Si y No. Ambas respuestas son correctas. Son cosas diferentes. Si. Propuestas como la tuya (la primera), la de @darioPHP, la de @informacionsys, la de @MMan y el sugerido por @pateketrueke, (la de @Nedned ni siquiera la entendí) NO SIRVEN cuando el CONJUNTO DE SOLUCIONES es muy grande, en mi caso eran 253338471349989000. No. El problema que tu planteas es diferente porque tu propones QUE EL CONJUNTO DE VALORES INICIALES ES MUY GRANDE, eso otro tipo de problema. Para resumir: 1 caso: Pocos valores iniciales, pocas soluciones: Ej. Este hilo. Solución: Cualquiera. 2 caso: Pocos valores iniciales, muchas soluciones: Ej. Mi hilo. Solución: La que propuse. 3 caso: Muchos valores iniciales, muchas soluciones: Ej. Lo que tu planteaste. Solución: No definida. ¿Se entiende? Yo solo digo que mi solución resuelve los casos 1 y 2 pero no el 3. Publique el código que lo verifica. Y afirmo, ademas, que las soluciones que plantearon los demás usuarios resuelven el caso 1, pero no el 2 ni el 3. Ahora bien, seria interesante ver que propones para resolver el tercer caso. Última edición por NSD; 06/03/2015 a las 09:11 Razón: Los putos colores que no salian |
Etiquetas: |