Seuls les membres ayant 30 points peuvent parler sur le chat.
Gestion du compte
Calculatrices
Graph 35 à 100 (CFX)
Graph 25/25+ (Pro) (fx-7400)
Graph 35+USB/75/85/95 (SD)
Graph 100/100+ (AFX)
ClassPad 300/330
Fx-CG 10/20
Fx-CP 400
Graph 90+E

Retour aux miniatures
Tri avancé
Liste des programmes
Nom Date
Sudoku solver
Word 1.1
Theo pythagore
Realrandom
Amortissement
Sudoq
Statistic tools
Prix psychologique
Morse
Moyenne 2
Calendrier
Codebar
Sudosix
random
Imc v2
Horloge
Getkey f
Savelist
Matprint
Finale
Pages: << 1,2,3,4,5,6,7,8,9,10,11,12 >>

¤ Transférer un programme sur
sa calculatrice

¤ Vous cherchez une fonction ?
Utilitaires >> Graphs 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 : 3416
Score au progrank : 18
Pas encore de note !

Vous devez être inscrit(e) et avoir 20 points ou plus pour noter.
396 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 v42 © créé par Neuronix et Muelsaco 2004 - 2019 | Il y a 145 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