abracadabraPDF › Forums › PDF – Général › Variables aléatoires
- Ce sujet contient 14 réponses, 3 participants et a été mis à jour pour la dernière fois par michel c., le il y a 3 mois et 3 semaines.
-
CréateurSujet
-
20 septembre 2024 à 14:53 #74897michel c.Participant
Bonjour, j’aimerais générer des variables aléatoires dans 4 champs (Var.n.3)
Je voudrais que chacune soir comprise entre une valeur mini et maxi.
J’aimerais également qu’elles soient tronquées à un nombre de décimales définies par les champs “Dec.n)
J’essaye des trucs en tâtonnant mais je ne maitrise pas trop …
Merci
Attachments:
You must be logged in to view attached files. -
CréateurSujet
-
AuteurRéponses
-
20 septembre 2024 à 15:38 #74899jctremblayParticipant
J’ai modifié ton script de document comme suit:
function VarAleas() {
for (var i = 1; i <= 4; i++) {
var aMin = parseFloat(this.getField("Var." + i + ".1").value);
var aMax = parseFloat(this.getField("Var." + i + ".2").value);
var aDec = parseInt(this.getField("Dec." + i).value, 10);
var a1 = aMin + Math.random() * (aMax - aMin); a1 = a1.toFixed(aDec);
a1 = parseFloat(a1);
this.getField("Var." + i + ".3").value = a1; }
}
- Cette réponse a été modifiée le il y a 4 mois par jctremblay.
- Cette réponse a été modifiée le il y a 4 mois par jctremblay.
Attachments:
You must be logged in to view attached files.20 septembre 2024 à 18:35 #74906bebarthMaître des clésbonjour,
J’avais déjà répondu à une demande similaire :
Voici donc une adaptation :
function getRandomIntInclusive(min,max) {
return (Math.random()*(max-min+1)+min-1).toFixed(this.getField("Dec."+i).value);
}
for (var i=1; i<=4; i++) {
this.getField("Var."+i+".3").value=getRandomIntInclusive(this.getField("Var."+i+".1").value,this.getField("Var."+i+".2").value);
}
@+
😎Attachments:
You must be logged in to view attached files.22 septembre 2024 à 15:22 #74917michel c.ParticipantMerci beaucoup, ça fonctionne à merveille.
Je voulais savoir s’il était possible de placer ce script en script de document? J’aimerais que l’action puisse être déclenchée par autre chose qu’un bouton
Merci
22 septembre 2024 à 16:06 #74918bebarthMaître des clésL’avantage de mettre une fonction en script de document c’est de pouvoir l’appeler à partir de plusieurs autres scripts.
Si elle n’est utilisée qu’avec un script, autant l’intégrer, et pas forcément depuis un bouton…
@+
😎22 septembre 2024 à 21:29 #74919michel c.ParticipantJe n’arrive pas à faire tourner ce script en script de document…
Attachments:
You must be logged in to view attached files.22 septembre 2024 à 22:11 #74921jctremblayParticipantJe n’arrive pas à faire tourner ce script en script de document…
Tu dois mettre tout le script dans une fonction et celle elle que tu appera dans ton bouton.
Attachments:
You must be logged in to view attached files.23 septembre 2024 à 07:17 #74923michel c.ParticipantOui je l’ai déjà fait plusieurs fois mais là ça ne marche pas….
voir document joint
Attachments:
You must be logged in to view attached files.23 septembre 2024 à 16:24 #74927bebarthMaître des clésbonjour,
J’ai modifié un peu le script car certaines fois le chiffre était inférieur au mini…
function getRandomIntInclusive(min,max,dec) {
return Math.round((Math.random()*(max-min)+min)*Math.pow(10,dec))/Math.pow(10,dec);
}
for (var i=1; i<=4; i++) {
this.getField("Var."+i+".3").value=getRandomIntInclusive(this.getField("Var."+i+".1").value,this.getField("Var."+i+".2").value,this.getField("Dec."+i).value);
}
@+
😎Attachments:
You must be logged in to view attached files.24 septembre 2024 à 08:33 #74929michel c.ParticipantMerci beaucoup.
30 septembre 2024 à 13:22 #74952michel c.ParticipantBonjour, je bloque sur l’adaptation de ce script et d’un autre.
Je souhaite qu’a l’exécution du script random() chaque champ Var.i.3 soit affecté d’une valeur aléatoire comprise entre les valeurs min et max et avec le nombre de décimales indiqué par le champ Dec.i
Je voudrais que le script ne s’exécute pas si le champ Var.i.0 ou le champ Var.i.1 ou le champ Var.i.2 est vide
Le script Variables quand à lui va créer les variables ayant comme nom les textes saisis dans les champs Var.i.0 et comme valeurs les valeurs aléatoires générées précédemment.
Il me semble que c’est le script random qui bloque et me cause des erreurs.
Je cherche mais j’avoue que j’ai un peu de mal à trouver.
Merci
- Cette réponse a été modifiée le il y a 3 mois et 3 semaines par michel c..
Attachments:
You must be logged in to view attached files.30 septembre 2024 à 13:55 #74956bebarthMaître des clésbonjour,
Une seule fonction en script de document :
function random (indice) {
function getRandomIntInclusive(min,max,dec) {
return Math.round((Math.random()*(max-min)+min)*Math.pow(10,dec))/Math.pow(10,dec);
}
if (this.getField("Var."+indice+".0").value !="" || this.getField("Var."+indice+".1").value !="" || this.getField("Var."+indice+".2").value !="") {
this.getField("Var."+indice+".3").value=getRandomIntInclusive(this.getField("Var."+indice+".1").value,this.getField("Var."+indice+".2").value,this.getField("Dec."+i).value);
}
eval(this.getField("Var."+indice+".0").value+"="+this.getField("Var."+indice+".3").value);
}
…et un script pour appeler cette fonction :
for (var i=1; i<=30; i++) {
try {
random (i);
} catch(e) {
this.getField("Var."+i+".3").value="";
}
}
@+
😎Attachments:
You must be logged in to view attached files.30 septembre 2024 à 14:31 #74958michel c.ParticipantJe viens de tester ceci :
function random () {
function getRandomIntInclusive(min,max,dec) { return Math.round((Math.random()*(max-min)+min)*Math.pow(10,dec))/Math.pow(10,dec);}
for (var i=1 ; i<31 ; i++) {
if (this.getField("Dec."+i).value == "") this.getField("Dec."+i).value = 0;
if (this.getField("Var."+i+".0").value == "") this.getField("Var."+i+".0").value = "Var."+i;
if (this.getField("Var."+i+".1").value == "") this.getField("Var."+i+".1").value = 0;
if (this.getField("Var."+i+".2").value == "") this.getField("Var."+i+".2").value = this.getField("Var."+i+".1").value+50;
if (this.getField("Var."+i+".2").value <= this.getField("Var."+i+".1").value) app.alert("La valeur maxi de la variable "+this.getField("Var."+i+".0").value+" doit être supérieure à la valeur mini");
else this.getField("Var."+i+".3").value=getRandomIntInclusive(this.getField("Var."+i+".1").value,this.getField("Var."+i+".2").value,this.getField("Dec."+i).value);}
}
ça fonctionne mais c’est un pis aller. C’est un peu bête de créer toutes ces variables si je n’en ai pas besoin. Je n’arrive pas encore à faire en sorte que ce script ne s’exécute que pour les variables demandées…
- Cette réponse a été modifiée le il y a 3 mois et 3 semaines par michel c..
- Cette réponse a été modifiée le il y a 3 mois et 3 semaines par michel c..
Attachments:
You must be logged in to view attached files.30 septembre 2024 à 15:19 #74962bebarthMaître des clésAs-tu essayé mon fichier ???
Essaye de mettre un try… catch !@+
😎30 septembre 2024 à 15:57 #74963michel c.ParticipantJe n’avais pas vu qu’il y avait une action associée au bouton. C’est pour cela que je n’arrivais pas à intégrer ton script dans mon document…
Merci
-
AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.