Cherche un générateur de chiffres aléatoire paramétrable
Cherche un générateur de chiffres aléatoire paramétrable
#1 par Marc5036 » 08 Fév 2017 à 14:23
Je suis à la recherche d'une générateur de chiffres aléatoire paramétrable.
Si quelqu'un sait le fabriquer sous excel ou autre je suis prêt à acheter
Mon besoin en terme de paramètres:
Pouvoir définir une valeur total paramétrable à 0.1 près
Pouvoir définir le nombre de chiffres aléatoire qui additionnés donneront la valeur total
Pouvoir définir une valeur minimal pour les chiffre aléatoire à 0.1 près
Merci
-
Marc5036 - 10 watts
- Messages: 210
- Inscription: 21 Oct 2010 à 20:45
- Localisation: Essonne
Re: Cherche un générateur de chiffres aléatoire paramétrable
#2 par zeroundemi » 08 Fév 2017 à 14:36
-
zeroundemi - 100 watts
- Messages: 2701
- Inscription: 25 Oct 2010 à 19:18
Re: Cherche un générateur de chiffres aléatoire paramétrable
#3 par shal » 08 Fév 2017 à 20:10
Ma solution :
#include <stdio.h>
#include <stdlib.h>
// gcc -Wall generator.c -o generator
//test : ./generator 56.2 7 3.2
int rand_a_b(int a, int b){
if(a>=b)
{
fprintf(stderr,"etourdi va!\n");
}
return rand()%(b-a) +a;
}
int main(int argc, char * argv[])
{
float total;
float min;
int nb;
float *tab;
float accumulateur;
int i;
if(argc != 4)
{
fprintf(stderr,"%s total min nb\n",argv[0]);
exit(1);
}
total = atof(argv[1]);
min = atof(argv[2]);
nb = atof(argv[2]);
tab = (float*)malloc(sizeof(float)*nb);
while(1)
{
accumulateur =0;
for(i=0;i<nb-1;i++)
{
tab[i] = (float)(rand_a_b((int)(min*1000),(int)(total*1000)));
tab[i] =tab[i] / (float)1000;
accumulateur+=tab[i];
if(accumulateur > total)
break;
}
if(accumulateur < total)
if((total -accumulateur) >min)
{
tab[nb-1] = total-accumulateur;
break;
}
}
printf("La solution est :");
for(i= 0;i<nb;i++)
printf(", %f",tab[i]);
printf("\n");
}
Exemple :
./generator 56.2 7 3.2
La solution est :, 7.698000, 7.854000, 7.886000, 7.017000, 9.698000, 7.726000, 8.321003
Une petite erreur d'arrondi sur la fin, mais rien de méchant (il faudrait refaire le calcul en 24/96).
Heureux les pauvres en espritsourd, car le royaume des cieux la HiFi est à eux!
De tout façon , j'entends pas grand chose après 14khz ;-)
-
shal - 100 watts
- Messages: 2039
- Inscription: 21 Oct 2010 à 18:18
- Localisation: Rennes
-
Re: Cherche un générateur de chiffres aléatoire paramétrable
#4 par PP_65 » 08 Fév 2017 à 20:16
-
PP_65 - 500 watts
- Messages: 28046
- Inscription: 21 Oct 2010 à 19:50
Re: Cherche un générateur de chiffres aléatoire paramétrable
#5 par shal » 08 Fév 2017 à 20:20
Très vieux (il date des années 70) mais encore très utilisé (notamment pour tout ce qui est proche du matériel)
https://fr.wikipedia.org/wiki/C_(langage)
Heureux les pauvres en espritsourd, car le royaume des cieux la HiFi est à eux!
De tout façon , j'entends pas grand chose après 14khz ;-)
-
shal - 100 watts
- Messages: 2039
- Inscription: 21 Oct 2010 à 18:18
- Localisation: Rennes
-
Re: Cherche un générateur de chiffres aléatoire paramétrable
#6 par shal » 08 Fév 2017 à 20:39
Par contre, je me suis planté où dans les specifs ?
EDIT : Forcement, je réponds à un message effacé , j'ai l'air débile
Je remet le message effacé :
C'est typique : ça a l'air inintelligible, super costaud, inspire le respect ...
... jusqu'au moment où tu examine le résultat, et là tu t'aperçois que ça ne fait pas le job demandé
Heureux les pauvres en espritsourd, car le royaume des cieux la HiFi est à eux!
De tout façon , j'entends pas grand chose après 14khz ;-)
-
shal - 100 watts
- Messages: 2039
- Inscription: 21 Oct 2010 à 18:18
- Localisation: Rennes
-
Re: Cherche un générateur de chiffres aléatoire paramétrable
#7 par zeroundemi » 08 Fév 2017 à 20:43
-
zeroundemi - 100 watts
- Messages: 2701
- Inscription: 25 Oct 2010 à 19:18
Re: Cherche un générateur de chiffres aléatoire paramétrable
#8 par PP_65 » 08 Fév 2017 à 21:10
shal » 08 Fév 2017, 19:20 a écrit:c'est du langage C .
Très vieux (il date des années 70) mais encore très utilisé (notamment pour tout ce qui est proche du matériel)
https://fr.wikipedia.org/wiki/C_(langage)
OK, j'en ai seulement entendu parler, n'en ayant pratiqué aucun, je ne vais pas le déchiffrer ; par contre
si on prends 100 comme somme à atteindre, 5 comme nombres aléatoires dont le total va donner 100 , le cinquième qui est donc 100-la somme des quatre autres n'est plus aléatoire . Donc tu demanderais 1 premier nombre compris strictement entre 0 et 100 , puis un second tel que la somme des deux premiers ne dépasse pas 100, et ainsi de suite jusqu'au 4 ème ; c'est ça ?
Ou alors , si 11 est le premier qui sort , tu demandes un nombre aléatoire entre 0 et 89 , et ainsi de suite ?
-
PP_65 - 500 watts
- Messages: 28046
- Inscription: 21 Oct 2010 à 19:50
Re: Cherche un générateur de chiffres aléatoire paramétrable
#9 par H@R » 09 Fév 2017 à 15:57
Je résume ainsi : je veux que la somme de 10 nombres aléatoires compris entre 0 et 1 me donne le chiffre 8.
Le dernier tirage (voire même avant) n'a plus rien d'aléatoire
On peut faire n tirages aléatoire puis leur somme
On peut aussi des tirages aléatoire pour tendre vers une somme sans savoir combien de tirages seront nécessaires
@marc : pourrais tu préciser un peu plus le contexte de ta demande ?
-
H@R - 50 watts
- Messages: 694
- Inscription: 24 Oct 2010 à 12:36
- Localisation: Lyon
Re: Cherche un générateur de chiffres aléatoire paramétrable
#10 par shal » 09 Fév 2017 à 19:44
PP_65 » 08 Fév 2017, 20:10 a écrit:
OK, j'en ai seulement entendu parler, n'en ayant pratiqué aucun, je ne vais pas le déchiffrer ; par contre
si on prends 100 comme somme à atteindre, 5 comme nombres aléatoires dont le total va donner 100 , le cinquième qui est donc 100-la somme des quatre autres n'est plus aléatoire . Donc tu demanderais 1 premier nombre compris strictement entre 0 et 100 , puis un second tel que la somme des deux premiers ne dépasse pas 100, et ainsi de suite jusqu'au 4 ème ; c'est ça ?
Ou alors , si 11 est le premier qui sort , tu demandes un nombre aléatoire entre 0 et 89 , et ainsi de suite ?
Plutôt le premier algo.
Mon algo (naïf, codé en 5minutes):
Je définis les 3 variables : min (minimum de chaque nombre) , nb (nombre de nombre aléatoire) et total (la somme de tous les nombre aléatoire).
J'ai commencé par définir une fonction qui me renvoi un nombre entre min et total (j'y bidouillé un truc pour transformé des entier en nombre a virgule).
Puis je fais nb-1 tirage de ce type.
A chaque fois je vérifie que la somme des nombre tirée reste inférieure à total (j’utilise la variable accumulateur pour cela). Si ce n'est pas le cas, je recommence tout a zéro (autant de fois que nécessaire).
Au bout de nb-1 tirage, 2 cas : total - accumulateur est plus grand que min . Bingo c'est gagné.
Sinon on recommence a zéro.
Je ne suis pas d'accord avec toi : le dernier est bien aléatoire et respecte bien les exigences fournit
Mais le diable est dans le détail : il n'est pas préciser que les nombres doivent respecter une distribution équiprobable
Il est possible que le dernier ne suive pas la même loi de probabilité que les autres
Heureux les pauvres en espritsourd, car le royaume des cieux la HiFi est à eux!
De tout façon , j'entends pas grand chose après 14khz ;-)
-
shal - 100 watts
- Messages: 2039
- Inscription: 21 Oct 2010 à 18:18
- Localisation: Rennes
-
Re: Cherche un générateur de chiffres aléatoire paramétrable
#11 par AJMARS » 09 Fév 2017 à 19:49
...
-
AJMARS - 500 watts
- Messages: 32151
- Inscription: 21 Oct 2010 à 20:26
- Localisation: Marseille
-
Re: Cherche un générateur de chiffres aléatoire paramétrable
#12 par shal » 09 Fév 2017 à 19:52
je suis bien conscient des problèmes du code (non equiprobabilité, cast de float violent) mais il est codé en 5 minutes et il respecte les exigences.
C''était préciser en excel ou autre
Heureux les pauvres en espritsourd, car le royaume des cieux la HiFi est à eux!
De tout façon , j'entends pas grand chose après 14khz ;-)
-
shal - 100 watts
- Messages: 2039
- Inscription: 21 Oct 2010 à 18:18
- Localisation: Rennes
-
Re: Cherche un générateur de chiffres aléatoire paramétrable
#13 par AJMARS » 09 Fév 2017 à 19:53
Cette phrase résonne au plus profond de ma mémoire......
...
-
AJMARS - 500 watts
- Messages: 32151
- Inscription: 21 Oct 2010 à 20:26
- Localisation: Marseille
-
Re: Cherche un générateur de chiffres aléatoire paramétrable
#14 par shal » 09 Fév 2017 à 20:00
#include <stdio.h>
int main()
{
printf("Hello World, the green!\n");
}
Heureux les pauvres en espritsourd, car le royaume des cieux la HiFi est à eux!
De tout façon , j'entends pas grand chose après 14khz ;-)
-
shal - 100 watts
- Messages: 2039
- Inscription: 21 Oct 2010 à 18:18
- Localisation: Rennes
-
Re: Cherche un générateur de chiffres aléatoire paramétrable
#15 par Hollow » 09 Fév 2017 à 20:02
Le dernier est calculé et basta.
Exemple 100 10 5, le premier entre 5 et 55, si 7 sort, le second entre 5 et (100-7-40) 53 et ainsi de suite.
a+
-
Hollow - 500 watts
- Messages: 9432
- Inscription: 21 Oct 2010 à 22:47
- Localisation: Ch'nord
-
Re: Cherche un générateur de chiffres aléatoire paramétrable
#16 par AJMARS » 09 Fév 2017 à 20:15
shal » 09 Fév 2017, 19:00 a écrit:Spécial dédicace pour André :un programme classique et vintage a la fois :
Quand je pense que j'ai écrit mon premier FIR sur un DEC en C....
On peut décidément pas être et avoir été.....
A plus
André
-
AJMARS - 500 watts
- Messages: 32151
- Inscription: 21 Oct 2010 à 20:26
- Localisation: Marseille
-
Re: Cherche un générateur de chiffres aléatoire paramétrable
#17 par shal » 09 Fév 2017 à 20:18
Hollow » 09 Fév 2017, 19:02 a écrit:Une simple boucle qui détermine un nombre aléatoire entre min et total-(total déjà atteint)-(nombre restant)*minium...
Le dernier est calculé et basta.
Exemple 100 10 5, le premier entre 5 et 55, si 7 sort, le second entre 5 et (100-7-40) 53 et ainsi de suite.
a+
En C cela donne :
accumulateur =0;
for(i=0;i<nb-1;i++)
{
tab[i] = (float)(rand_a_b(min,total-accumulateur-((nb-1-i)*min)));
tab[i] =tab[i];
accumulateur+=tab[i];
}
tab[nb-1] = total-accumulateur;
Heureux les pauvres en espritsourd, car le royaume des cieux la HiFi est à eux!
De tout façon , j'entends pas grand chose après 14khz ;-)
-
shal - 100 watts
- Messages: 2039
- Inscription: 21 Oct 2010 à 18:18
- Localisation: Rennes
-
Re: Cherche un générateur de chiffres aléatoire paramétrable
#18 par zeroundemi » 09 Fév 2017 à 20:42
-
zeroundemi - 100 watts
- Messages: 2701
- Inscription: 25 Oct 2010 à 19:18
Re: Cherche un générateur de chiffres aléatoire paramétrable
#19 par Marc5036 » 10 Fév 2017 à 19:03
zeroundemi » 08 Fév 2017, 13:36 a écrit:Voici ce que j'ai compris :
. Tu veux générer N nombres aléatoires
. La somme de ces N nombres doit être égale à T
. Le plus petit de ces N nombres doit être supérieur ou égal à m
. T et m sont paramétrables par pas de 0,1
La solution consiste à générer les nombres aléatoires dans l'intervalle [m,2*T/N-m] par la fonction EXCEL suivante :
+2*(T/N-m)*ALEA()+m
T > 0
m >= 0
T doit être plus grand que m * N
Il n'y aura pas de résultat exact
Faire plusieurs essais successifs jusqu'à obtenir une série de N nombres dont le total approche d'assez près T
Merci
Je souhaite "figer" m à la valeur 7 (mais dans le futur je souhaite pouvoir changer la valeur si besoin).
les variables sont donc bien T et N
Mais je souhaite aussi avoir tout les chiffres en une seule manipulation
Exemple T = 374.60
N= 9
résultat=
101
35
7
12
77.20
26
18.40
84
14
-
Marc5036 - 10 watts
- Messages: 210
- Inscription: 21 Oct 2010 à 20:45
- Localisation: Essonne
Re: Cherche un générateur de chiffres aléatoire paramétrable
#20 par zeroundemi » 10 Fév 2017 à 19:21
-
zeroundemi - 100 watts
- Messages: 2701
- Inscription: 25 Oct 2010 à 19:18
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité