Autor Tema: Numero aleatorio con Random? como?  (Leído 8911 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Numero aleatorio con Random? como?
« en: 09 de Junio de 2005, 13:30:00 »
Hola Amigos:

Una ayudita con esto por favor:

Tengo un vector de 10 posiciones y quiero seleccionar de forma aleatoria una posición de dicho vector utilizando la función RANDOM…

La ayuda dice:

RANDOM Var
Efectúa una iteración pseudo-aleatoria en Var .Var debe ser una variable de 16 bit .No se pueden usar variables de array con índice variable, pero se permite usar variables de array con índice constante. Var se usa tanto como origen, como para guardar el resultado .El algoritmo pseudo-aleatorio usado tiene un paso de 65535 (el único número que no produce es el cero).

RANDOM W4 coloca un número aleatorio en W4.

Lo que no tengo idea y quiero saber es como hace para que sea solo valores entre 1 y 9, alguien puede guiarme con esto…? Avergonzado

Desconectado ejmc

  • PIC18
  • ****
  • Mensajes: 311
RE: Numero aleatorio con Random? como?
« Respuesta #1 en: 09 de Junio de 2005, 20:59:00 »
HolaSonrisa
Primero genera el random , luego tomas el resto de la division var/10, y asi tienes un random que tomara un valor de 0 a 9. Suerte

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
RE: Numero aleatorio con Random? como?
« Respuesta #2 en: 10 de Junio de 2005, 11:17:00 »
Hola:

Gracias ejcm... a mi parecer hice lo que tu me dijiste con este codigo:

num var word

pause 250
lcdout $FE,1
inicio:
        random num
        num=num/10
        lcdout $FE,$C5,dec num
        pause 2000
        lcdout $FE,1
        goto inicio
end

Pero lo que obtengo son valores mayores a nueve... luego llega un momento que se hace 0 y permanece siempre asi... estoy haciendo algo mal..? por si de algo sirve utilizo un Pic 16F628.. pero no creo que influya en nada.... Que es lo que estoy haciendo mal...? Llorica

Desconectado ejmc

  • PIC18
  • ****
  • Mensajes: 311
RE: Numero aleatorio con Random? como?
« Respuesta #3 en: 10 de Junio de 2005, 22:45:00 »
Hola Lord  Sonrisa
Lo que te digo es asi:

num var word

pause 500
lcdout $FE,1
inicio: random num
          num = num // 10  "ESTO DIVIDE A NUM POR 10 Y EL RESTO DE LA DIVICION LO GUARDA EN NUM
          lcdout $FE,$C5,dec num
          pause 2000
          lcdout $FE,1
          goto inicio

aSI TIENE QUE ANDAR

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
RE: Numero aleatorio con Random? como?
« Respuesta #4 en: 14 de Junio de 2005, 10:59:00 »
Hola ejmc:

probé lo que tu me dijistey si genera numeros pero solamente el 1 2 y 5 y siempre en la misma secuencia.. funciona siempre así o hay que corregir algo...?

Desconectado RGL

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 634
RE: Numero aleatorio con Random? como?
« Respuesta #5 en: 14 de Junio de 2005, 12:30:00 »
Puedes hacer una cosa un poco más lenta pero que puede ser más eficaz:

Generas una var random de 1 a 65535 y con un case o un if seleccionas:

si var entre 1 y 7000 entonces el random es 1
si var entre 7001 y 14000 entonces random es 2
si var entre 14001 y 21000 entonces random es3

yt así sucesivamente. Se supone que todos los valores serán equiprobables y te irán saliendo todos los random

Saludos
Ricky

Desconectado ejmc

  • PIC18
  • ****
  • Mensajes: 311
RE: Numero aleatorio con Random? como?
« Respuesta #6 en: 14 de Junio de 2005, 23:22:00 »
Hola LordSonrisa
Si el random esta bien hecho no tendria que suceder eso que dices. Asi que deve ser un problema del PBP. Capas que usando dos random y una operacion cualquiera entre ellos, puedes solucionarlo. Quiero decir algo asi:

random var1
random var2
var1 = var1 // 5  "VAR1 TENDRIA QUE TENER CUALQUIER VALOR ENTRE 0 Y 4
var2 = var2 // 6  "VAR2      "           "       "             "               "          "     0 Y 5
var_final = var1 + var2 "var_final tendria que tener cualquier valor entre 0 y 9

Para saver si el random del pbp es el que esta mal puedes probar lo siguiente: gENERA un " RANDOM var ". Muestra el valor en el display y fijate si el ultimo digito de cada numero generado sigue la secuencia 1 2 y 5 que dices.
Suerte

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: Numero aleatorio con Random? como?
« Respuesta #7 en: 19 de Julio de 2007, 12:46:19 »
Hola:

Retomando nuevamente esto, ahora que lo necesito, me parece raro y sigo teniendo problemas con este bendito RANDOM y no puedo generar valores aleatorios entre 1-9  :8}, alguien tiene experiencia con esto y puede darme una ayudita  :P

Gracias  :mrgreen:

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: Numero aleatorio con Random? como?
« Respuesta #8 en: 19 de Julio de 2007, 13:23:25 »
el Pic16F628 si no recuerdo mal, tiene 3 Timer, usa uno para generar el random
es un poco bestia la solucion pero creo que debe ir bien.
Saludos desde Granada, España.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: Numero aleatorio con Random? como?
« Respuesta #9 en: 19 de Julio de 2007, 14:10:52 »
Mi sugerencia es que utilices un pin ADC como entrada analógica al aire configurado, por ejemplo, a 8 bits de resolución.
El número que leerás será cualquier valor entre 0 y 255. Para conseguir un nº del 1 al 9, podrías hacer lo siguiente:
ValorRandom = entero ( ValorADC / 8 ) + 1

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: Numero aleatorio con Random? como?
« Respuesta #10 en: 19 de Julio de 2007, 14:45:47 »
Mi sugerencia es que utilices un pin ADC como entrada analógica al aire configurado, por ejemplo, a 8 bits de resolución.
El número que leerás será cualquier valor entre 0 y 255. Para conseguir un nº del 1 al 9, podrías hacer lo siguiente:
ValorRandom = entero ( ValorADC / 8 ) + 1

Esa si es una buena idea usar el adc, Yo estuve probando con RANDOM de PBP y si genera varios numeros al azar pero cuando sobrepasa el rango si es byte los 255 vuelve a repetir los valores.
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: Numero aleatorio con Random? como?
« Respuesta #11 en: 19 de Julio de 2007, 16:34:07 »
Hola:

Pues es muy buena la idea, gracias Manolo, la voy a probar, el Random funciona bien, pero genera un número aleatorio entre 0-65535, y a ratos da un mismo valor, probaré con lo que comentó manolo a ver que tal.

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: Numero aleatorio con Random? como?
« Respuesta #12 en: 19 de Julio de 2007, 17:51:47 »
Hola!
Hola Lord<img   src="http://pics.miarroba.com/caretos/smile.gif" alt="Sonrisa" title="Sonrisa" />
Si el random esta bien hecho no tendria que suceder eso que dices. Asi que deve ser un problema del PBP. Capas que usando dos random y una operacion cualquiera entre ellos, puedes solucionarlo. Quiero decir algo asi:

random var1
random var2
var1 = var1 // 5  "VAR1 TENDRIA QUE TENER CUALQUIER VALOR ENTRE 0 Y 4
var2 = var2 // 6  "VAR2      "           "       "             "               "          "     0 Y 5
var_final = var1 + var2 "var_final tendria que tener cualquier valor entre 0 y 9

Para saver si el random del pbp es el que esta mal puedes probar lo siguiente: gENERA un " RANDOM var ". Muestra el valor en el display y fijate si el ultimo digito de cada numero generado sigue la secuencia 1 2 y 5 que dices.
Suerte

Hay algun tipo de error en este razonamiento. Los valores de 0 a 9 obtenidos no son "al azar".

Me explico: Las posibilidades de obtener un 0 son una en 5x6 = 30, ya que ambos resultados tienen que ser 0 a la vez, y hay una posibilidad en 5 que el primero lo sea, y una en 6 de que el segundo lo sea, luego, hay una en 30 de que salga un "0" al sumar.

Peeeeeero...para otros numeros no es asi. Por ejemplo, para que salga un 5, puede salir 0 y 5, 1 y 4, 2 y 3, 3 y 2 o 4 y 1. Por lo que hay 5 veces mas posibilidades de obtener un "5" que un cero...y eso es inaceptable en el azar.

De hecho, algo de eso puede aprenderse si se estudian los numeros que se obtienen al arrojar un par de dados....no de gusto cada numero se paga mas o menos, justamente debido a esto.

Saludos!
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Numero aleatorio con Random? como?
« Respuesta #13 en: 19 de Julio de 2007, 18:37:56 »
Yo haria:

RANDOM Var
Var = Var % 10

Donde "%" deberia ser el operador MOD(no programo en este lenguaje de PICs asi que por ahi le corresponde otro simbolo).
« Última modificación: 19 de Julio de 2007, 18:41:13 por BrunoF »
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Numero aleatorio con Random? como?
« Respuesta #14 en: 19 de Julio de 2007, 18:39:08 »
Si lo queres entre 1 y 9 seria:

RANDOM Var
Var = (Var % 9) + 1
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.


 

anything