Elegir Aleatoriamente un numero de una lista.
2 participantes
Página 1 de 1.
Elegir Aleatoriamente un numero de una lista.
Hola colegas:
Hace tiempo que no os pido ayuda, pero en esta ocasion, me veo obligado ya que no doy con la solucion.
Bueno tengo una lista de numeros tal como asi (setq lista '(10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25)) y lo que quiero es elegir un numero de forma aleatoria de la lista.
gracias y un saludo
Hace tiempo que no os pido ayuda, pero en esta ocasion, me veo obligado ya que no doy con la solucion.
Bueno tengo una lista de numeros tal como asi (setq lista '(10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25)) y lo que quiero es elegir un numero de forma aleatoria de la lista.
gracias y un saludo
Dominguez- Mensajes : 152
Fecha de inscripción : 20/03/2016
Edad : 74
Localización : Zaragoza (España)
Re: Elegir Aleatoriamente un numero de una lista.
Hola maestro
sería un honor que mi respuesta te sea de utilidad
Siempre y cuando la selección se realice una sola vez en un fragmento de código, debería ser suficiente tomar la variable "millisecs" y aplicarle un módulo (rem) con la longitud de la lista. Algo como esto:
Ahora, que si eso estuviera dentro de algún tipo de bucle o se repite con secuencias cortas entre consultas por dicha variable, deja de funcionar así tan simple, ya que en el mismo milisegundo podrían darse varias llamadas retornando varias veces el mismo número, o números continuos.
En ese caso se requeriría algo como por ejemplo tomar el mismo valor obtenido en una selección aleatoria para aplicar una conversión al siguiente resultado, o para definir una cantidad de segundos de pausa antes de la siguiente llamada. Eso dejaría de ser aleatorio y pasaría a ser pseudo-aleatorio, pero igual suele funcionar en la mayoría de los casos.
sería un honor que mi respuesta te sea de utilidad
Siempre y cuando la selección se realice una sola vez en un fragmento de código, debería ser suficiente tomar la variable "millisecs" y aplicarle un módulo (rem) con la longitud de la lista. Algo como esto:
- Código:
(nth (rem (getvar "millisecs") (length lista)) lista)
Ahora, que si eso estuviera dentro de algún tipo de bucle o se repite con secuencias cortas entre consultas por dicha variable, deja de funcionar así tan simple, ya que en el mismo milisegundo podrían darse varias llamadas retornando varias veces el mismo número, o números continuos.
En ese caso se requeriría algo como por ejemplo tomar el mismo valor obtenido en una selección aleatoria para aplicar una conversión al siguiente resultado, o para definir una cantidad de segundos de pausa antes de la siguiente llamada. Eso dejaría de ser aleatorio y pasaría a ser pseudo-aleatorio, pero igual suele funcionar en la mayoría de los casos.
Gerardo Calvo- Mensajes : 46
Fecha de inscripción : 29/10/2019
A robierzo le gusta esta publicaciòn
Re: Elegir Aleatoriamente un numero de una lista.
despues de emitir la respuesta anterior me acordé de lee-mac XD
Justamente hay una solución en su página, y hace lo que te decía de que cada número que calcula es fruto de una ecuación que incluye al número anterior (guardado en la variable $xn) El usa la variable date pero da igual
http://www.lee-mac.com/random.html
Igual siempre son pseudoaleatorios, porque dos secuencias iniciadas en el mismo milisegundo con la misma cantidad de operaciones por segundo entre llamadas serán secuendias iguales. Pero eso suele ser sin importancia en la mayoría de aplicaciones.
Justamente hay una solución en su página, y hace lo que te decía de que cada número que calcula es fruto de una ecuación que incluye al número anterior (guardado en la variable $xn) El usa la variable date pero da igual
http://www.lee-mac.com/random.html
Igual siempre son pseudoaleatorios, porque dos secuencias iniciadas en el mismo milisegundo con la misma cantidad de operaciones por segundo entre llamadas serán secuendias iguales. Pero eso suele ser sin importancia en la mayoría de aplicaciones.
Gerardo Calvo- Mensajes : 46
Fecha de inscripción : 29/10/2019
A robierzo le gusta esta publicaciòn
Re: Elegir Aleatoriamente un numero de una lista.
Muy agradecido por tus comentarios, ya lo he solucionado con un sistema parecido a lo que comentas, no me da ningun fayo, porque el numero elegido con este sistema, lo elimino de la lista y ya no existe y asi no puede volver a elegirlo el sistema, pero cada vez tengo que decirle que escoja entre (1- cantidad) de numeros de la lista.Gerardo Calvo escribió:despues de emitir la respuesta anterior me acordé de lee-mac XD
Muchas gracias
- Código:
(defun busca_num ()
(setvar 'cmdecho 0)
(defun coef ()
(if (not *seed*)
(setq *seed* (getvar 'date))
)
(setq *seed* (rem (+ (* 25173 *seed*) 13849) 65536))
(setq num (/ *seed* 65536))
)
(if (not (< mini maxi))
(progn (setq tmp mini) (setq mini maxi) (setq maxi tmp))
)
(setq num (fix (+ (* (coef) (- maxi mini)) mini)))
)
Dominguez- Mensajes : 152
Fecha de inscripción : 20/03/2016
Edad : 74
Localización : Zaragoza (España)
A robierzo le gusta esta publicaciòn
Temas similares
» Elegir desde un Initget
» Elemento lista
» Ordenar lista
» Transponer una lista
» Sustraer y crear lista
» Elemento lista
» Ordenar lista
» Transponer una lista
» Sustraer y crear lista
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.
|
|