Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Autres questions


Index du Forum » Autres questions » Génération aléatoire en Basic
Supersolga Hors ligne Membre Points: 96 Défis: 0 Message

Génération aléatoire en Basic

Posté le 26/08/2020 12:53

Bonjour à tous, pour le jeu que je suis en train de faire, j'aurais besoin d'un système de génération aléatoire. je sais que c'est possible en Basic Casio car j'ai joué à Calcraft. Est-ce que quelqu'un pourrais m'indiquer comment faire (en mode graphique de préférence) ?
Merci


Tituya Hors ligne Rédacteur Points: 1823 Défis: 16 Message

Citer : Posté le 26/08/2020 13:01 | #


https://www.planet-casio.com/Fr/forums/topic15832-1-tdm-11-ranint-pour-les-nuls.html
Bretagne > Reste du globe
(Et de toute façon, vous pouvez pas dire l'inverse grâce à Bzh)



Supersolga Hors ligne Membre Points: 96 Défis: 0 Message

Citer : Posté le 26/08/2020 13:04 | #


Merci je vais jeter un coup d'oeil

Ajouté le 26/08/2020 à 13:10 :
Est t'il possible de mettre des nombres aléatoire dans une matrice en utilisant la même technique que pour les liste ?
Donnez-moi un point fixe et un levier et je soulèverai la Terre
-Archimède
Tituya Hors ligne Rédacteur Points: 1823 Défis: 16 Message

Citer : Posté le 26/08/2020 13:18 | #


Je ne sais pas. Je ne pense pas pour les matrices, mais par contre tu peux très bien faire deux boucles for permettant de se situer dans la matrice et de générer un nombre aléatoire dans la cellule.
Bretagne > Reste du globe
(Et de toute façon, vous pouvez pas dire l'inverse grâce à Bzh)



Kikoodx Hors ligne Membre Points: 2834 Défis: 11 Message

Citer : Posté le 26/08/2020 14:14 | #


Salut, c'est possible en créant une matrice et en ajoutant les listes générées. Voici un code créant une matrice de 15x10 contenant des nombres aléatoires compris entre 0 et 4 inclus, version lisible :
RanInt#(0 ,4, 15)→List 1
List→Mat(List 1)→Mat A
For 1→A To 9
RanInt#(0, 4, 15)→List 1
Augment(Mat A, List→Mat(List 1))→Mat A
Next

Même code optimisé en taille :
RanInt#(0,4,15→List1
List→Mat(1→Mat A
For 1→A To 9
RanInt#(0,4,15→List1
Augment(Mat A,List→Mat(1→Mat A
Next

Bon courage
Time is running out
Supersolga Hors ligne Membre Points: 96 Défis: 0 Message

Citer : Posté le 26/08/2020 14:57 | #


Merci @Tituya et @Kikoodx j'espere que j'arriverai à me servir correctement de vos idées

Ajouté le 26/08/2020 à 15:05 :
Bon, tout compte fait, je vais surtout me servir de l'astuce de Kikookx parce que... Je n'ai pas compris celle de Tituya (désolé... )
Et encore un problème de résolu
Donnez-moi un point fixe et un levier et je soulèverai la Terre
-Archimède
Hashby Hors ligne Membre Points: 455 Défis: 4 Message

Citer : Posté le 26/08/2020 15:23 | #


Si tu veux j'ai même une astuce pour générer rapidement une liste aléatoire de nombre SANS répétition
J'aime la Fxcp400
Supersolga Hors ligne Membre Points: 96 Défis: 0 Message

Citer : Posté le 26/08/2020 15:24 | #


D'accord je veut bien mais, attention faut pas qu'elle soit trop compliquée sinon je vais rien comprendre mdr
Donnez-moi un point fixe et un levier et je soulèverai la Terre
-Archimède
Hashby Hors ligne Membre Points: 455 Défis: 4 Message

Citer : Posté le 26/08/2020 15:42 | #


Tu as trois listes, une avec les nombres que tu souhaites mélanger L1, une autre qui va servir de "testeur" (on l'appellera T) et une dernière ta liste finale L2 avec les nombres mélangés. Avec la fonction random, tu sélectionnes un rang au hasard de L1, tu vérifies que le nombre correspondant n'est pas dans T, si ce n'est pas le cas tu recommences, sinon le nombre va dans L2 et dans T pour éviter de le reprendre à nouveau.
Le problème, comment tester sans passer chaque rang en revu ?
Tout se base sur la fonction rangeAppoint qui est pour faire simple un la fonction qui te dira si oui ou non le nombre sélectionner est correcte.

Niveau code ça donne ça (exemple de la génération d'une liste aléatoire de 100 nombres sans répétition) :
For 1→i to 100
"r"→z

While z≠"EXPR"
rand(1,100)→a
rangeAppoint(T,a,a)→z
GetType z,z
WhileEnd

a→T[i]
L1[a]→L2[i]
Next

J'aime la Fxcp400
Supersolga Hors ligne Membre Points: 96 Défis: 0 Message

Citer : Posté le 26/08/2020 15:44 | #


Merci @Hashby, j'étudierais ta technique dès que possible
Donnez-moi un point fixe et un levier et je soulèverai la Terre
-Archimède
Lephenixnoir Hors ligne Administrateur Points: 21329 Défis: 149 Message

Citer : Posté le 26/08/2020 15:45 | #


La fonction rangeAppoint() ne fait pas partie du panel Basic non-Classpad, malheureusement. D'ailleurs il y a des algos plus efficaces pour sortir une permutation aléatoire
Hashby Hors ligne Membre Points: 455 Défis: 4 Message

Citer : Posté le 26/08/2020 15:47 | #


Je pensais que rangeAppoint y serait, my bad...
J'aime la Fxcp400

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2022 | Il y a 23 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd