Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Autres questions


Index du Forum » Autres questions » Entiers aléatoires
Bochu_59 Hors ligne Membre Points: 241 Défis: 5 Message

Entiers aléatoires

Posté le 31/05/2020 19:58

Bonsoir.
J'aimerais faire un tirage de 49 entiers de 1 à 49 sans répétition.
Pour un entier entre 1 et 49, pas de souci : j'utilise RanInt#(1,49).
Mais sans répétition (comme sur TI) je ne sais pas.
Pouvez-vous m'aider ?
Merci d'avance.
Bochu_59


Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 31/05/2020 20:03 | #


Voici une solution peu optimisée mais qui a le mérite de fonctionner... on génère la liste de 1 à 49 et on en tire ensuite une permutation aléatoire.

Seq(X,X,1,49,1)→List 1
For 1→I To 48
RanInt#(I,49)→J
List 1[I]→K
List 1[J]→List 1[I]
K→List 1[J]
Next
List 1

Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Bochu_59 Hors ligne Membre Points: 241 Défis: 5 Message

Citer : Posté le 31/05/2020 20:07 | #


Merci de ta réactivité. Cette solution me convient.
Redcmd Hors ligne Membre Points: 380 Défis: 7 Message

Citer : Posté le 01/06/2020 03:12 | #


That solution is pretty optimized already
It's the same as what I did in Sudoku (Except it was 9 numbers, not 49)
Seq(X,X,1,49,1→List 1
For 1→I To 49
RanInt#(1,49→R
List 1[I
List 1[R→List 1[I
Ans→List 1[R
Next
List 1


@Lephenixnoir why did you only go to 48?
It just means 49 has a much higher chance of still being 49 compared to every other number
Sentaro21 En ligne Membre Points: 877 Défis: 0 Message

Citer : Posté le 01/06/2020 08:55 | #


It can also use the Sort command.
Seq(X,X,1,49,1→List 1
RanInt#(1,49)→List 2
SortA(List2,List1)

Je continue à développer C.Basic. (Il est compatible avec Basic Casio.)
Overclocking utilitaire Ftune/Ptune2/Ptune3 est également disponible.
Si vous avez des questions ou un rapport de bogue, n'hésitez pas à me le faire savoir.
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 01/06/2020 09:18 | #


Redcmd: There is a key difference between our solutions, which is the way we choose new numbers to exchange.

At each round, I select a random number between I and 49, which is the candidate for entry I. This means I uniformly select a random number among the remaining numbers of the list. This gives a uniform permutation of the list. (I stop at 48 because after the first 48 numbers have been chosen, the 49th is automatically fixed, and it's usually not 49. Also, RanInt#(N,N) is an error even though it should return N.)

However, you compose 49 random tranpositions, which is not guaranteed to give a uniform output.

Sentaro: Is this C.Basic? In standard Basic, RanInt#() returns a number so you can't assign it to List 2.
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Redcmd Hors ligne Membre Points: 380 Défis: 7 Message

Citer : Posté le 01/06/2020 09:25 | #


Also SortA() is extremely slow
Sentaro21 En ligne Membre Points: 877 Défis: 0 Message

Citer : Posté le 01/06/2020 14:37 | #


@Lephenixnoir
Sorry,
It's RanList#(49) not RanInt#(49).
Je continue à développer C.Basic. (Il est compatible avec Basic Casio.)
Overclocking utilitaire Ftune/Ptune2/Ptune3 est également disponible.
Si vous avez des questions ou un rapport de bogue, n'hésitez pas à me le faire savoir.
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 01/06/2020 14:45 | #


This feature of the SortA() command is really nice. I can easily be used to create any permutation very quickly
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)

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 v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 120 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