¿Cómo generar efectivamente un número aleatorio con PICAXE 08M2?

0

Me pregunto cómo generar efectivamente números aleatorios con mi PICAXE 08M2. El siguiente es mi código:

; Inputs
symbol push_red = C.1 ; In 1
symbol push_buzzer = C.3; In 3

; Outputs
symbol buzzer = C.2; Out 2
symbol led_red = C.4;

symbol action = b0
symbol randnum = w5; 
symbol randbit = w6; 

main:

    FOR action = 1 TO 5
        RANDOM randnum
        LET randbit = randnum // 10
        IF randnum > 4 THEN
            PAUSE 500
            low led_red
            pause 500
            high led_red
        ELSE
            SOUND buzzer,(100, 100)
        ENDIF
    NEXT action

    SOUND buzzer,(120, 200)

Aunque estoy generando un nuevo número aleatorio con cada bucle, el resultado es siempre el mismo: los LED se iluminan, no se genera ningún sonido. He leído algunos artículos sobre cómo dividir randnum por un número apropiado, pero no estoy seguro de cómo funciona.

    
pregunta Tianxiang Xiong

1 respuesta

1

Como dice Dave: estás usando la variable incorrecta en la declaración IF .

IF randnum > 4 THEN  

debería ser

IF randbit > 4 THEN

Como entiendo por otra pregunta, randnum está en el rango 0..65535, entonces la probabilidad de que sea menor que 5 es menor que 1 en 10 000. Entonces, si repite la prueba muchas veces, escuche el timbre una o dos veces, pero esas posibilidades son escasas para un bucle ejecutado solo 5 veces.

    
respondido por el stevenvh

Lea otras preguntas en las etiquetas