Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Desarrollo en Delphi para Android
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy


Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-05-2015
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 13
danielmj Va por buen camino
Evitar que random se repita

Hola, esta consulta bien podría ir en el apartado general de delphi, pero bueno en este caso se trata de android. Sé que el problema puede ser una tonteria, pero a mi no me sale...

La cosa es que quiero que se genere un número aleatorio del 1 al 8 ambos inclusive para cada una de las etiquetas (label), yo tengo esto:

Código Delphi [-]
//randomize;
  label4.Text:= IntToStr(random(8)+1);
  label5.Text:= IntToStr(random(8)+1);
  label6.Text:= IntToStr(random(8)+1);
  label7.Text:= IntToStr(random(8)+1);
  label8.Text:= IntToStr(random(8)+1);
  label9.Text:= IntToStr(random(8)+1);
  label10.Text:= IntToStr(random(8)+1);
  label11.Text:= IntToStr(random(8)+1);

He probado también permitiendo el "randomize" del inicio y nada, el resultado es este o similar al de la captura.



Como veis hay números que se repiten entonces, ¿de que forma puedo hacer que no se repitan si tener que hacer uso de un casi interminable "if"?
Gracias de antemano.
__________________
La juventud pasa, la inmadurez se supera, la ignorancia se cura con la educación, y la embriaguez con la sobriedad, pero la estupidez dura para siempre. Aristofanes.
Responder Con Cita
  #2  
Antiguo 27-05-2015
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Hola danielmj

Te daré una idea general de cómo puedes resolverlo.

Primero llena un vector con 8 posiciones o las que necesites

(1, 2, 3, 4, 5, 6, 7, 8 )

Después en un ciclo con N repeticiones haces lo siguiente:

genera dos números aleatorios (X1,X2) entre 1 y 8

Por ejemplo: X1 = 2 , X2 = 7

Ahora intercambia los valores contenidos en la posición X1 y X2 del vector

Después de intercambiar te quedaría el vector así:

(1, 7, 3, 4, 5, 6, 2, 8 )

Si repites esto N veces al final tendrás un vector desordenado aleatoriamente

( 6, 2, 4, 7, 3, 1, 8, 5)

Elige un valor adecuado para N no muy grande.

Este vector se lo asignas a tus etiquetas.

Saludos
Responder Con Cita
  #3  
Antiguo 27-05-2015
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 13
danielmj Va por buen camino
Hola héctor, gracias por responder tan rápido, al final encontré esta otra solución aquí en el foro (http://www.clubdelphi.com/foros/showthread.php?t=30894) haciendo uso de arrays y parace que va bien. Saludos.
__________________
La juventud pasa, la inmadurez se supera, la ignorancia se cura con la educación, y la embriaguez con la sobriedad, pero la estupidez dura para siempre. Aristofanes.
Responder Con Cita
  #4  
Antiguo 27-05-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Es lo mismo, un vector es un array.
Cita:
En programación, una matriz o vector (llamado en inglés array) es una zona de almacenamiento continuo, que contiene una serie de elementos del mismo tipo, los elementos de la matriz.
Responder Con Cita
  #5  
Antiguo 27-05-2015
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 13
danielmj Va por buen camino
hola casimiro, gracias por la informacion jeje conocí la palabra array cuando me dieron las primeras clases de turbo pascal, lo unico que yo no les llamo vectores sino arrays, no sé será la costumbre.

Un saludo.

P.D.: Ya aprovecho para comentaros la finalidad de esos numeros aleatorios, simplemente es por que como ya dije en otro post, estoy currando de vigilante y tanto en mi empresa como en la empresa contratante del servicio, me piden que no haga siempre el mismo recorrido, entonces decidí hacerme esta pequeña aplicacion para hacerme mas facil el trabajo, digamos que esos números aleatorios "dibujan" (de menor a mayor) un patrón y solo tengo que seguirlo para hacer las rondas, así nunca será el mismo recorrido. Espero haberme explicado correctamente.
__________________
La juventud pasa, la inmadurez se supera, la ignorancia se cura con la educación, y la embriaguez con la sobriedad, pero la estupidez dura para siempre. Aristofanes.
Responder Con Cita
  #6  
Antiguo 27-05-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por danielmj Ver Mensaje
hola casimiro, gracias por la informacion jeje conocí la palabra array cuando me dieron las primeras clases de turbo pascal, lo unico que yo no les llamo vectores sino arrays, no sé será la costumbre.
Es fácil encontrar cosas que se denominan con distintos nombres y a veces nos confundimos por eso.


Cita:
Empezado por danielmj Ver Mensaje
P.D.: Ya aprovecho para comentaros la finalidad de esos numeros aleatorios, simplemente es por que como ya dije en otro post, estoy currando de vigilante y tanto en mi empresa como en la empresa contratante del servicio, me piden que no haga siempre el mismo recorrido, entonces decidí hacerme esta pequeña aplicacion para hacerme mas facil el trabajo, digamos que esos números aleatorios "dibujan" (de menor a mayor) un patrón y solo tengo que seguirlo para hacer las rondas, así nunca será el mismo recorrido. Espero haberme explicado correctamente.
Eso está bien, aprovechar la tecnología para mejorar tu trabajo. Además te entretienes y aprendes
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Validar contenido campo para que no se repita fwhite Conexión con bases de datos 5 07-02-2012 17:14:51
evitar que un mdichlid se repita mas de 1 vez granodetoro Varios 9 26-04-2011 03:15:42
como evitar que un formulario MDICHILd se repita cada ves que lo llamo granodetoro C++ Builder 7 30-03-2011 01:59:55
generar numero de 9 cifras aleatorio que nunca se repita coletaun Varios 9 19-02-2007 10:34:29
controlar que un artículo que exista no se repita josejose Varios 2 17-01-2007 19:27:04


La franja horaria es GMT +2. Ahora son las 05:43:29.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi