CDL Posté(e) le 19 février 2004 Posté(e) le 19 février 2004 existe t'il une commande LISP qui retourne un nombre aléatoire ?
Tramber Posté(e) le 19 février 2004 Posté(e) le 19 février 2004 Non, mais je te renvoie au fichier de sapin automatique de Noêl dernier, tu te souviens ? Il y a un (fix....(numéro de série de je ne sais plus quoi)) Pas bête mais à adapter. Sinon il y a aussi le getpoint avec des limites entre 0,0 et 100,100. Par exemple. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
CDL Posté(e) le 19 février 2004 Auteur Posté(e) le 19 février 2004 je regarde dans le sapingetpoint je vois pas le trucmerci A+
Tramber Posté(e) le 19 février 2004 Posté(e) le 19 février 2004 Euh, en fait, il faut batir de l'aléatoire. Donc si tu fais une fonctionqui renvoie un point, puis un autre, tu les manipules de façon à tirer un réel depuis une saisie de point qui, elle, est aléatoire. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Invité Patrick Posté(e) le 19 février 2004 Posté(e) le 19 février 2004 Première remarque: il n'existe pas de hasard en informatique, donc pas de nombre aléatoire.Mais, il existe des pseudo aléatoire, par exemple if suffit de se baser sur le nombre de millisecondes à l'instant T, bien malin qui pourrait prédire ce nombre lorsqu'on lui envoie le "top"!Voir par exemple la fonction suivante: (defun randnum (/ modulus multiplier increment random) (if (not seed) (setq seed (getvar "DATE")) ) (setq modulus 65536 multiplier 25173 increment 13849 seed (rem (+ (* multiplier seed) increment) modulus) random (/ seed modulus) ) ) sur cette page.
Tramber Posté(e) le 19 février 2004 Posté(e) le 19 février 2004 Ca n'est pas la première fois que je vois des pages d'Afralisp. Très sympa. Dans le lisp du sapin, je crois me rappeler que l'auteur utilisait cette variable. C'est ca ? Par la saisie de point, j'avais fait un code pas trop mauvais qui me sortait un chiffre de 1 à 100. Mais bon.....pas trop mauvais pour moi !!! ;) Cependant, en BASIC, il y a une fonction RANDOM ?! Me trompe-je ?Dans ma calculatrice Casio, je crois aussi...;) Mais, me diras-tu, Patrick, ces fonctions viennent sans doute aussi de l'horloge, comme DATE. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
CDL Posté(e) le 19 février 2004 Auteur Posté(e) le 19 février 2004 c'est la fonction RANDOM que je cherchait en LISPle programme que j'avais ecrit en BASICsortait 6 nombresle 2eme pas= au premier le 3eme pas= au 2 autres etc...et si = 0 ou > a 49 essaye encore une foisdonc combinaison de 6 chiffres aléatoiresun LOTO en fait maintenant c'est 5 de 1 à 50 (modif possible en entré) pour dessiner les boulles (pour le sapin) avec autoCAD facile. c'est pour ça que getpoint c'est plutot roulette de 1 à 36 (chandelles pour le sapin)
CDL Posté(e) le 22 février 2004 Auteur Posté(e) le 22 février 2004 ;Un programme a tester (merci d'envoyer vos remarques); merci a Patrick pour sa participation ; RECHERCHE D'UN NOMBRE ALEATOIRE ENTRE 0 ET 100 (defun tirage (/ modulus multiplier increment random) (if (not seed) (setq seed (getvar "DATE")) ) (setq nombre (setq modulus 65536 multiplier 25173 increment 13849 seed (rem (+ (* multiplier seed) increment) modulus) random (/ seed modulus) ))(setq numero_sorti (fix (* 100 nombre)))) ; PROGRAMME UNE LISTE DE 5 NOMBRES PARMI 50 NOMBRES (defun c:jeu () ; CONSTANTES ET VARIABLES (setq nombre_de_numero 5) (setq total_de_numero 50) (setq numero_sorti 0) (setq rien "resultat") (setq compteur1 0) (setq compteur2 0) (setq numero_01 0) (setq numero "pas bon") (setq list1 (list)) (setq list2 (list)) ; TRAITEMENTS (While (< compteur1 nombre_de_numero) (tirage) (setq numero "ok") (if (= 0 numero_sorti) (setq numero "pas_bon") ) (if (< total_de_numero numero_sorti) (setq numero "pas_bon") ) ; VERIFICATION NUMERO DEJA SORTI (setq compteur2 (length list1)) (while (< compteur2 nbr_numero) (if (= numero_sorti (nth compteur2 list1)) (setq numero "deja_sorti") ) (setq compteur2 (+ 1 compteur2)) ) ; AJOUt DANS LA LISTE (if (= numero "ok") (progn (setq numero_01 numero_sorti) (setq compteur1 (+ 1 compteur1)) (if (>= 5 compteur1) (setq list2(cons numero_01 list1)) ) (setq list1 list2) ) ) ); FIN)
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant