Variable aléatoire

electrique5

Senior Member
Bonjour
je voudrait savoir comment peut on obtenir un seul chiffre aléatoire et mettre ce chiffre dans une variable
j'ai essayé ca met ca ne fonctionne pas

Code:
random w2
bintoascii w2,b10,b11,b12,b13,b14
let VarA = b14
mais qu'un seul chiffre de 0 a 9 uniquement

je voudrait savoir si cela était possible
Je vous remercie
 

MGU

Senior Member
Bonjour
je voudrait savoir comment peut on obtenir un seul chiffre aléatoire et mettre ce chiffre dans une variable
j'ai essayé ca met ca ne fonctionne pas

Code:
random w2
bintoascii w2,b10,b11,b12,b13,b14
let VarA = b14
mais qu'un seul chiffre de 0 a 9 uniquement

je voudrait savoir si cela était possible
Je vous remercie
Bonjour,

Oui, c'est normal, bintoascii ne donne pas des chiffres, mais les valeurs ASCII de ces chiffres.

Avec random, l'argument est une variable word, concaténation de deux variables bytes, ici w2= (b5;b4).

Pour obtenir un chiffre de 0 à 9, un de ces bytes suffit, en isolant le chiffre des unités, reste d'une division par 10

MM
 

MGU

Senior Member
suite:

Sans initialisation "aléatoire", la séquence générée est toujours la même, pas important dans certains cas, mais sinon, voici un ex; pour générer des séquence différentes:

alea.JPG

MM
 

PapyJP

Senior Member
... pour générer des séquence différentes ...
Il est pratiquement impossible d'obtenir un nombre aléatoire ( au sens stric du terme ) avec nos machines.
Seuls certains programmes dédiés ( programmes de Monte Carlo tournants sur de ' gros ' calculateurs ) peuvent en produire une suite aléatoire.
Ces progammes sont utilisés, en physique nucléaire, pour calculer les interactions des particules incidentes qui bombarbent des atomes.
Désolé !
 
Last edited:

jojojo

Senior Member
Si, si, on peut. Mais PAS que par programmation.
Il nous faut un poil de hard.

Une diode (ou mieux, la jonction E-C d'un BJT), une résistance et un AOP.
Le bruit généré EST aléatoire. Hop, un coup d'ADC et voilou.
 

PieM

Senior Member
Si, si, on peut. Mais PAS que par programmation.
Il nous faut un poil de hard.
Même pas: il suffit de lire une entrée ADC laissée en l'air...

par ex:

readadc B.5, b1
b1= b1//10
donnera un chiffre aléatoire entre 0 et 9 sans passer par random.
 

jojojo

Senior Member
Même pas: il suffit de lire une entrée ADC laissée en l'air...
Tssss !.... Encore plus rusé que moi ! Je viens juste de faire le test, sur un 08M2 (port C.1).

Ça marche !

Merci, Piem.
 

PapyJP

Senior Member
Même pas: il suffit de lire une entrée ADC laissée en l'air
J' en doute.
Je n' ai pas fait la manip comme jojo mais je crains que si, dans un repère orthonormé, on trace la courbe du nombre d' occurences ( axe X de 0 à 9 / axe Y nombre d' occurences ) celle ci se rapprochera d' une courbe de Gauss et non du rectangle espéré. Jojo peut-il tracer cette courbe ? et nous la publier ?
Si celà convient à electrique 5 alors ok mais ce n' est pas un tirage aléatoire au sens strict.
 

electrique5

Senior Member
Merci pour toute ses réponse ca ma aider et c'est résolu pour moi
par contre j'aurais une autre question concernant un les picaxe 40X1
j'ai besoin de faire un bip sur haut parleur du coup j'ai besoin d'une sortie le souci c'est que tous mes ports B ne sont plus dispo

il me reste quelques port C0 a C3 tous les port D et tous les port A
mais je voudrait savoir si on peu faire une sortie son sur les port restant


j'ai testé
Code:
sound D 2,(97,5)
et
Code:
sound D.2,(97,5)
mais ca ne fonctionne pas ni avec les port C ni avec les A ni avec les D
est-ce ce qu'il y a moyen de faire un son sur ses sorties ?
 

jojojo

Senior Member
Jojo peut-il tracer cette courbe ? et nous la publier ?
Attention ! Le truc de Piem nous donne un CHIFFRE aléatoire, 10 valeurs. Tracer une courbe, là-dessus me semble peu utile ...
Par contre, le bruit généré par une jonction semi-conductrice, lui, nous donnera un NOMBRE, compris entre 0 et 1023 (en ADC10).
Là, il serait intéressant de tracer la courbe. Mais ... Bonjour le boulot ! (Edit: Bon, ça m'intéresse, vais peut-être le faire ...:confused:).

Electrique:
mais ca ne fonctionne pas ni avec les port C ni avec les A ni avec les D
est-ce ce qu'il y a moyen de faire un son sur ses sorties ?
Je soupçonne (pas vérifié), que l'instruction SOUND ne fonctionne QUE sur des ports dédiés PWM (ça semble logique). Or, les ports qui te restent ne le sont pas.
Peut-être une solution, avec une boucle, et un TOGGLE sur un des port qui fonctionne en OUT.
 

PapyJP

Senior Member
Attention ! Le truc de Piem nous donne un CHIFFRE aléatoire, 10 valeurs. Tracer une courbe, là-dessus me semble peu utile ...

Electrique:

Je soupçonne (pas vérifié), que l'instruction SOUND ne fonctionne QUE sur des ports dédiés PWM
1/ Oui, bien sûr ! mais ça n' empêche pas d' avoir, sur une courbe, une idée de la répartition des occurences même s'il n'y a que dix chiffres possibles à sortir du chapeau !
2/Non, l'instruction " tune " ( et non pas " sound " ) ne fait pas, à ma connaissance, de restriction à ce sujet.
3/Pour les ports en sortie, consultez les manuels ou reportez vous au Post de Piem du 18/06/2016 sur le 40X1:
port A : 4 entrées ana ou 4 entrées numériques
port B : 8 sorties figées (pin 33 - 40)
port C : 8 entrées num (par défaut) ou 8 sorties
port D : 8 entrées num
port E : 3 entrées ana figées (pin 8,9,et10)
 
Last edited:

PieM

Senior Member
1/ Oui, bien sûr ! mais ça n' empêche pas d' avoir, sur une courbe, une idée de la répartition des occurences même s'il n'y a que dix chiffres possibles à sortir du chapeau !
Sur 4000 sorties:

013%
112%
211%
38%
410%
59%
69%
78%
89%
910%

Pas fait le test du Khi 2 mais en tout cas on est loin d'une courbe de Gauss qui n'a pas plus de raison d'être puisqu'on mesure un bruit électrique.
 

MGU

Senior Member
Bonjour,

Merci PieM pour cette démonstration, pas de doute sur l'aléatoire de la méthode. Le seul défaut est que l'utilisation d'une broche...

MM
 

PapyJP

Senior Member
Sur 4000 sorties
Félicitations pour cette manip plus que probante !
Votre méthode permet, sans conteste, de tirer aléatoirement un chiffre parmi dix ( 0-9 )
J 'en suis sur le ... sur mon séant.
Le test de Pearson ( Khi² ) me semble en effet inutile dans la mesure où votre méthode répond parfaitement au Pb posé. Il n' amènera rien de plus ( et je suis quasiment nul en 'stat' ! ).
Je doutais que le "bruit électrique" fut un bruit blanc. Celà semble pourtant le cas car il explique vos résultats, mais mon doute n'est pas levé pour autant.
Pour mieux comprendre, ( et peut-être expliquer ) les résultats étonnants de cette manip, pouvez-vous nous donner la largeur ( en temps ) de la porte d'échantillonnage du signal d' entrée ( qui est, si j' ai bien compris, une entrée en 'l' air' ) ? Quel processeur, quel type d' entrée est-ce ( base 'en l'air', ... ) ?
Vraiment bravo pour cette manip
Cdt
 
Last edited:

PieM

Senior Member
Félicitations pour cette manip plus que probante !
Votre méthode permet, sans conteste, de tirer aléatoirement un chiffre parmi dix ( 0-9 )
J 'en suis sur le ... sur mon séant.
Le test de Pearson ( Khi² ) me semble en effet inutile dans la mesure où votre méthode répond parfaitement au Pb posé. Il n' amènera rien de plus ( et je suis quasiment nul en 'stat' ! ).
Je doutais que le "bruit électrique" fut un bruit blanc. Celà semble pourtant le cas car il explique vos résultats, mais mon doute n'est pas levé pour autant.
Pour mieux comprendre, ( et peut-être expliquer ) les résultats étonnants de cette manip, pouvez-vous nous donner la largeur ( en temps ) de la porte d'échantillonnage du signal d' entrée ( qui est, si j' ai bien compris, une entrée en 'l' air' ) ? Quel processeur, quel type d' entrée est-ce ( base 'en l'air', ... ) ?
Vraiment bravo pour cette manip
Cdt
Bonjour Papy,

le test a été fait sur un 14M2 donc un PIC16F1825 sur son horloge interne.
L'entrée ana est caractérisée par un temps d'acquisition typique de 100ns, temps d'ouverture de la capa CHold.
Bien entendu le temps de conversion sur 10bits (~ 20 µs) n'intervient pas.

Je faisais une acquisition toutes les 20ms environ.

Ici on mesure un niveau de tension dû au bruit (pas forcément blanc donc) limité aux 4 bits de poids faibles pour un chiffre 0-9.
Il n'est pas impossible que l'acquisition non synchrone d'un signal périodique donnerait le même résultat!

L'inconvénient, comme le soulignait Michel, est que ça mobilise une entrée ana...

Je me suis amusé (!?) à faire la même mesure sur la fonction random du picaxe et 7000 acquisitions.
Le résultat est quasi parfait avec mieux que 10.1% et 9.9% !
 
Top