Plus sur les groupes de « 1 »
Nous prolongeons aujourd’hui
l’article publié il y a quatre jours, d’une part en montrant une autre solution
dont la formulation est nettement plus compacte , d’autre part en montrant
comme on peut engendrer des séquences aléatoires de « 0 » et de
« 1 » d’une telle longueur, de 36 caractères.
La copie d’écran nous montre le même résultat que celui obtenu avec la première solution, avec en plus dans les lignes 13 et 14 les solutions proposées par Roberto Mensa.
Les deux formules imaginées par Roberto sont des formules matricielles, donc validées avec [Ctrl]-[Maj]-[Entrée]. Les voici :
Une solution par formule
matricielle
La copie d’écran nous montre le même résultat que celui obtenu avec la première solution, avec en plus dans les lignes 13 et 14 les solutions proposées par Roberto Mensa.
Les deux formules imaginées par Roberto sont des formules matricielles, donc validées avec [Ctrl]-[Maj]-[Entrée]. Les voici :
A13 :
=texte(somme(10^{0;2;4;6;8;10}*(2+nbcar(substitue(substitue($A$3;"01"; "0|1");"10";"1|0"))-nbcar(substitue("|"&substitue(substitue($A$3;"01";
"0|1");"10";"1|0")&"|";"|"&rept(1;{1;2;3;4;5;6})&"|";"||")))/{1;2;3;4;5;6});"|"&rept("00|";6))
"0|1");"10";"1|0")&"|";"|"&rept(1;{1;2;3;4;5;6})&"|";"||")))/{1;2;3;4;5;6});"|"&rept("00|";6))
A14 :
=texte(somme(10^{6;4;3;2;1;0}*(2+nbcar(substitue(substitue($A$3;"01"; "0|1");"10";"1|0"))-nbcar(substitue("|"&substitue(substitue($A$3;"01";
"0|1");"10";"1|0")&"|";"|"&rept(1;{1;2;3;4;5;6})&"|";"||")))/{1;2;3;4;5;6});"|00|00|0|0|0|0|")
"0|1");"10";"1|0")&"|";"|"&rept(1;{1;2;3;4;5;6})&"|";"||")))/{1;2;3;4;5;6});"|00|00|0|0|0|0|")
Je
vous laisse le plaisir de décortiquer ces deux formules…
Série
aléatoire de « 0 » et de « 1 »
Pour
créer une série aléatoire de 36 valeurs en « 0 » et en
« 1 », nous allons utiliser la fonction decbin(), qui assure la
conversion d’un nombre décimal en nombre binaire. Le problème, c’est que le
plus gros argument positif de cette fonction est 511, ce qui fait en binaire
neuf « 1 » d’affilée.
Pour
engendrer un nombre aléatoire de 36 bits (dinary digit, donc
« 0 » ou
« 1 ») , l’astuce revient à concaténer quatre fonctions. Chacune d’entre elles tire un nombre aléatoire de 0 à 511,999 mais – comme les décimales sont ignorées – cela revient à un nombre entier aléatoire de 0 à 511.
« 1 ») , l’astuce revient à concaténer quatre fonctions. Chacune d’entre elles tire un nombre aléatoire de 0 à 511,999 mais – comme les décimales sont ignorées – cela revient à un nombre entier aléatoire de 0 à 511.
Encore
faut-il résoudre un problème, le fait que les « 0 » à gauche ne sont
pas affichés, car ils ne sont pas significatifs. Ce problème est résolu grâce à
la formule droite("00000000"&decbin(…);9) !
Voici
donc la formule permettant de créer un nombre aléatoire de 36 bits :
=droite("00000000"&decbin(512*alea());9)&droite("00000000"&decbin(512*alea());9)&droite("00000000"&decbin(512*alea());9)&droite("0000000"&decbin(512*alea());9)
0 Commentaire(s):
Enregistrer un commentaire
<< Accueil