Donnez vie à vos documents numériques !
 

Variables aléatoires

abracadabraPDF Forums PDF – Général Variables aléatoires

  • Créateur
    Sujet
  • #74897
    michel 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.
Affichage de 14 réponses de 1 à 14 (sur un total de 14)
  • Auteur
    Réponses
  • #74899
    jctremblay
    Participant

    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.
    #74906
    bebarth
    Maître des clés

    bonjour,
    J’avais déjà répondu à une demande similaire :

    Nombre aléatoire compris entre 2 valeurs


    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.
    #74917
    michel c.
    Participant

    Merci 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

    #74918
    bebarth
    Maître des clés

    L’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…

    @+
    😎

    #74919
    michel c.
    Participant

    Je n’arrive pas à faire tourner ce script en script de document…

    Attachments:
    You must be logged in to view attached files.
    #74921
    jctremblay
    Participant

    Je 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.
    #74923
    michel c.
    Participant

    Oui 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.
    #74927
    bebarth
    Maître des clés

    bonjour,
    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.
    #74929
    michel c.
    Participant

    Merci beaucoup.

    #74952
    michel c.
    Participant

    Bonjour, 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.
    #74956
    bebarth
    Maître des clés

    bonjour,
    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.
    #74958
    michel c.
    Participant

    Je 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.
    #74962
    bebarth
    Maître des clés

    As-tu essayé mon fichier ???
    Essaye de mettre un try… catch !

    @+
    😎

    #74963
    michel c.
    Participant

    Je 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

Affichage de 14 réponses de 1 à 14 (sur un total de 14)
  • Vous devez être connecté pour répondre à ce sujet.