Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Escoger una palabra de una lista aleatoriamente (https://www.clubdelphi.com/foros/showthread.php?t=10190)

DarkByte 12-05-2004 18:36:17

Escoger una palabra de una lista aleatoriamente
 
Saludos, ruego su ayuda una vez más.

¿Cómo puedo escoger una palabra (bueno, una string) aleatoriamente de una lista de strings?. Me parece que no necesita el caso más explicacion... debe ser algo sencillo... pero no lo he encontrado en los foros.

Gracias, simplemente, por leerme.

Paoti 12-05-2004 18:44:36

Hola buen dia!!!!!



mirate en la ayuda la funcion Random();


esta te gebera un numero al azar entre 0 y 1, ese valor lo multiplicas por el valor maximo de la lista de string, y devuelves la parte entera y listo, el valor obtenido sera un numero aleatorio de una elemnto de tu lista.


nota. debes usar la palabara randomize antes....




espero te sirva!



Saludos a todos

roman 12-05-2004 18:48:19

Cita:

Empezado por Paoti
esta te gebera un numero al azar entre 0 y 1, ese valor lo multiplicas por el valor maximo de la lista de string, y devuelves la parte entera

De hecho Random puede recibir un argumento entero en cuyo caso regresara un número entero entre 0 y argumento - 1:

Código Delphi [-]
Assert(Random(StringList.Count) in [0..StringList.Count - 1]);

// Saludos

Paoti 12-05-2004 18:50:49

voila, lo habia olvidado!!!!




esta mas sencillo!!!



nos vemos

DarkByte 12-05-2004 18:51:17

Gracias a ambos, probaré y si puedo os contesto antes del viernes (no me dejan "enchufarme" entre semana).

DarkByte 14-05-2004 08:12:56

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
StringList:TStrings;
UnaString:String;
begin
StringList := TStrings.Create;
try
StringList.Add('hola');
StringList.Add('Pepe');
StringList.Add('jeje');
StringList.Add('jojo');
finally
Assert(Random(StringList.Count) in [0..StringList.Count - 1]);
end;
end;
¿?, no se como obtener el número aleatorio.

__cadetill 14-05-2004 09:45:50

prueba con

Código Delphi [-]
var
  MyRandom: integer;
begin
  MyRandom := Random(StringList.Count - 1);

roman 14-05-2004 16:39:43

DarkByte

Assert es un procedimiento especial de Delphi que se utiliza más que nada para cuando está uno haciendo pruebas con una aplicación. Recibe un parámetro booleano y opcionalmente una cadena de texto. Si el primer parámetro es false Assert genera una excepción indicando la unidad y línea de código en que se produjo.

A diferencia de otras excepciones Assert se utiliza como una herramienta de control del programador. El programador, en un punto dado del código puede pensar que cierta condición debe ser cierta en cualquier circunstancia basado en la forma en que diseñó la aplicación y entonces asegura que tal condición ha de cumplirse (Assert). Si en el transcurso de las pruebas resulta que su afirmación era falsa, saltará la excepción indicándole el punto exacto de manera que le sea fácil revisar el código y hacer las modificaciones necesarias.

Dicho en otras palabras, utilizar Assert es como decir:

"He diseñado el código de tal forma que aseguro que X condición será cierta en este punto y me puedo basar en ello para el resto del código"

Si la aserción falla querrá decir que el código no se ajusta al diseño que el pensaba y tendrá que corregirlo.

Por ello, en el contexto de la respuesta de Paoti, cuando puse

Código Delphi [-]
Assert(Random(StringList.Count) in [0..StringList.Count - 1]);

estaba simplemente utilizando la semántica de Assert para asegurar que el valor de retorno de Random sería un número entero entre 0 y StringList.Count - 1.

Esta es una explicación un poco larga para explicar porque puse Assert pero quería aprovechar para que conocieras algo nuevo de lenguaje.

// Saludos

DarkByte 15-05-2004 10:45:04

Gracias a ambos, probaré a ver... y ya os cuento.

Muchas gracias Roman por hacerme aprender algo más, nunca se sabe lo suficiente ;)


La franja horaria es GMT +2. Ahora son las 00:35:48.

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