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.
Menu
Calculatrices
Graph 35 à 100
Graph 25+Pro/25+E/25+E II
Graph 35+USB/75(+E)/85/95 SD
Graph 100(+)
Classpad 300/330(+)
fx-CG 10/20 (Prizm)
Classpad 400(+E)
Graph 90+E
fx-92+ SC
Liens
¤ Transférer un programme sur
sa calculatrice

¤ Vous cherchez une fonction ?
Utilitaires >> Graph 35 à 100 >> Divers >> Realrandom
Realrandom
Version : 1.0b Taille : 480 octets Ajouté le : 2008-07-06 17:42 Modifié le : 2008-07-06 17:42
Auteur et posteur :
KristabaHors ligneMembrePoints: 614 Défis: 22 Message
Aucune image disponible
Nombre de visites sur cette page : 4213
Score au progrank : 20
Pas encore de note !
Vous devez être connecté(e) pour noter (inscription).
563 téléchargements | Soumettre un test


Description :

RealRandom est un programme complet de génération de nombres pseudo-aléatoires.

"Encore un? " allez vous me dire...

Et bien, en fait, celui là est un peu particulier ;)!

Déjà, il est mon points de vue du fonctionnement de la fonction Ran#.

Ensuite, il permet de "simuler" un reset complet de la calculatrice et un démarage de cette dernière.
Pourquoi? Par ce que, toujours selon moi, ces deux événements sont les seuls a influencer la fonction Ran# :D!

Enfin, mon programme utilise un algorithme (qui n'est pas de moi, je tient a le signaler quand même ) dit "Standard Minimal" des générateurs "congruentiels linéaires" (la méthode de génération de ces nombres la plus utilisée).

Son algorithme est donc le suivant : (petit copier/coller, honte à moi >_<' )

Xn+1 = 16807 * Xn % (2^31- 1)

Xn étant le nombre dernièrement généré, et Xn+1 le nombre qui va être généré.

A, et aussi, "%" est le symbol du "modulo", une opération de base des ordi, mais pas des calto >_<'.
En fait, X%Y va nous donner le reste de la division euclidienne de X par Y; (15%6 va donner 3, car 6*2 +3).
Et son équivalent Basic Casio est :
X-(Y*Int (X/Y))


Cet algorithme a été vérifié, et on a prouvé qu'il sortirait tous les nombre de 1 à 2^31-2 inclus une fois par cycle (un cycle de 2^31-2, donc, ce qui est pas mal tout de même ). Il les sort aussi d'une manière pseudo-aléatoire, et de manière équiprobabiliste >_<'...


Enfin, bref, pour finir les explications, mon programme divise le nombre obtenu par 2^31-2 afin d'avoir, comme la fonction Ran#, un nombre compris entre 0 et 1.
RealRandom utilise le temps d'appui sur la touche [EXE] -vous verrez vous-même où :D- pour initialiser après un démarrage. Donc même en faisant un "reset total" du programme (je signale au passage que cette fonction met juste la matrice A [1,1] à 60, et qu'elle ne reset pas réellement la calto >_<' ), le nombre ne sera pas forcement le même a chaque fois :E!
Le Basic n'est pas assez rapide pour compter précisément le temps durant lequel on a appuyé, mais la calto, en interne, pourrait faire ça (donc mon explication est assez réaliste ).


Bon, et puis, vous verrez par vous même :D!
Après ce petit message *sort*, vous pouvez enfin tester, et voir cette petite merveille d'équilibre et d'aléatoire >_<'!


Commentaires :


ThomatosHors ligneAncien administrateurPoints: 3495 Défis: 39 Message
Posté le 06-07-2008 à 18:37 | #
Mouaif ...

C'est sympa, ça fonctionne ... presque bien ^^.
Le problème c'est que les gens restent pas plus ou moins longtemps appuyés sur une touche, c'est pas précis du tout en basic la gestion du temps d'appui

J'ai beau faire exprès de ne pas faire attention à comment j'appuie, j'appuie toujours pareil, il faut que j'me mette à faire exprès d'appuyer différemment à chaqe fois pour que ça fonctionne ^^.

Cela dit l'idée est bonne, et en C cela serait parfait je pense ^^, mais bon là
KristabaHors ligneMembrePoints: 614 Défis: 22 Message
Posté le 06-07-2008 à 18:49 | #

Ouip, c'est sûr que là, je doit être précis à peut près au dizième de seconde près (donc faut vraiment le vouloir, comme tu dis, pour avoir des temps différents >_<').

En C, je pense que la précision doit être jusqu'à la µs (à 1Mhz, il faut 1microseconde (µs, a ne as confondre avec milliseconde -ms-) par instructions... donc on doit pas être loin de ça ;)!

Après, mon programme, c'était surtout pour voire si mon hypothèse était réaliste ...
ThomatosHors ligneAncien administrateurPoints: 3495 Défis: 39 Message
Posté le 06-07-2008 à 19:48 | #
Ok

Je pense que si je recommece mes add-ins, j'utilierais cette méthode pour l'aléatoire, je me créerais une fonction, parc'que ça à l'air l'être correct
PylaterreurHors ligneMembrePoints: 2190 Défis: 8 Message
Posté le 06-07-2008 à 20:52 | #
t'as aussi les fonctions de Kucalc qui font de l'aléatoire qui fonctionne, pas comme les fonctions officielles

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 110 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