Gestion de l'aléatoire #5

Closed
opened 2 years ago by Shadow15510 · 8 comments

La gestion de l'aléatoire manque, une fonction qui permet de générer un nombre entre 0 et 1 serait utile !

La gestion de l'aléatoire manque, une fonction qui permet de générer un nombre entre 0 et 1 serait utile !
Owner

C'est compliqué. Quel générateur aléatoire utiliser ? Les LCG sont pas toujours de bonne qualité et parfois très faciles à prédire (ie. alternent des pairs et des impairs), et les générateurs plus performants sont parfois gros.

Bon après on n'a pas besoin de grand-chose, c'est sûr... on fait pas de la crypto.

TinyMT serait peut-être de bon goût.

C'est compliqué. Quel générateur aléatoire utiliser ? Les LCG sont pas toujours de bonne qualité et parfois très faciles à prédire (ie. alternent des pairs et des impairs), et les générateurs plus performants sont parfois gros. Bon après on n'a pas besoin de grand-chose, c'est sûr... on fait pas de la crypto. TinyMT serait peut-être de bon goût.

En attendant, implementer rand et srand de stdlib.h ne devrait pas être compliqué, il y a même une implementation proposé dans le brouillon du document ANSI C à la section 4.10.2.2 :think:

En attendant, implementer `rand` et `srand` de `stdlib.h` ne devrait pas être compliqué, il y a même une implementation proposé dans le [brouillon du document ANSI C](https://web.archive.org/web/20161223125339/http://flash-gordon.me.uk/ansi.c.txt) à la section 4.10.2.2 :think:
Owner

Hmm, cette implémentation est hyper fragile, je voudrais vraiment éviter ça... 15 bits c'est très très pauvre, et le LCG sont pas très fiables.

Hmm, cette implémentation est hyper fragile, je voudrais vraiment éviter ça... 15 bits c'est très très pauvre, et le LCG sont pas très fiables.

Sans doute, mais bon à part des plus ou moins, c'est pas comme si on allait faire des trucs complexes

Sans doute, mais bon à part des plus ou moins, c'est pas comme si on allait faire des trucs complexes :star:
Owner

Je comprends... pour pas que ça traîne trop, j'ai ajouté une version réduite du code de TinyMT comprenant uniquement la génération d'entiers aux sources de gint (ça ne se recode pas ce genre de trucs, c'est codé avec les bonnes licences par les chercheurs et fait pour être réutilisé directement). Le rand() et le srand() qui vont avec sont codés et rapidement testés. Je vais envoyer tout ça dans mes prochains commits.

Je comprends... pour pas que ça traîne trop, j'ai ajouté une version réduite du code de TinyMT comprenant uniquement la génération d'entiers aux sources de gint (ça ne se recode pas ce genre de trucs, c'est codé avec les bonnes licences par les chercheurs et fait pour être réutilisé directement). Le `rand()` et le `srand()` qui vont avec sont codés et rapidement testés. Je vais envoyer tout ça dans mes prochains commits.

Je viens prendre des nouvelles du front, que ce ticket ne finisse pas dans les limbes. ^^

Je viens prendre des nouvelles du front, que ce ticket ne finisse pas dans les limbes. ^^
Owner

Hmm donc en gros j'ai une version minimale de TinyMT32 prête à être intégrée dans gint. J'aurais pu la pousser avant, évidemment ça m'a échappé. Je vais la mettre après le fix de Bfile sur G90, dont j'arrive au bout.

Hmm donc en gros j'ai une version minimale de TinyMT32 prête à être intégrée dans gint. J'aurais pu la pousser avant, évidemment ça m'a échappé. Je vais la mettre après le fix de Bfile sur G90, dont j'arrive au bout.
Owner

Voilà, c'est ajouté par le commit 50cc536324 qui est pour l'instant disponible sur la branche dev. Le temps que je reteste gint sur SH3 (ça fait un bon moment), ça passera dans la prochaine release sur master (pas de date par contre).

Ç'aura été long mais on y arrive...

Voilà, c'est ajouté par le commit https://gitea.planet-casio.com/Lephenixnoir/gint/commit/50cc536324de269396b45289fd3f9193793a9855 qui est pour l'instant disponible sur la branche dev. Le temps que je reteste gint sur SH3 (ça fait un bon moment), ça passera dans la prochaine release sur master (pas de date par contre). Ç'aura été long mais on y arrive...
Lephenixnoir closed this issue 2 years ago
Sign in to join this conversation.
No Label
No Milestone
No Assignees
4 Participants
Notifications
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
There is no content yet.