Index du forum
M
e
n
u

Cherche un générateur de chiffres aléatoire paramétrable

Emploi, informatique, transport, ...

Retourner vers Coup de pouce



Cherche un générateur de chiffres aléatoire paramétrable

Message #1 par Marc5036 » 08 Fév 2017 à 14:23

Bonjour à tous,

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
Avatar de l’utilisateur
Marc5036
10 watts
10 watts
Messages: 210
Inscription: 21 Oct 2010 à 20:45
Localisation: Essonne


Re: Cherche un générateur de chiffres aléatoire paramétrable

Message #2 par zeroundemi » 08 Fév 2017 à 14:36

..........
Dernière édition par zeroundemi le 17 Fév 2017 à 02:25, édité 1 fois.
Avatar de l’utilisateur
zeroundemi
100 watts
100 watts
Messages: 2701
Inscription: 25 Oct 2010 à 19:18


Re: Cherche un générateur de chiffres aléatoire paramétrable

Message #3 par shal » 08 Fév 2017 à 20:10

Original comme demande sur le Vert  :wink:

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).
Dernière édition par shal le 08 Fév 2017 à 20:53, édité 1 fois.
Pas plus pire sourd qu'une oreille d'or qui veut rien entendre.
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 ;-)
Avatar de l’utilisateur
shal
100 watts
100 watts
Messages: 2039
Inscription: 21 Oct 2010 à 18:18
Localisation: Rennes


Re: Cherche un générateur de chiffres aléatoire paramétrable

Message #4 par PP_65 » 08 Fév 2017 à 20:16

C'est quoi ce langage info ?
Avatar de l’utilisateur
PP_65
500 watts
500 watts
Messages: 27957
Inscription: 21 Oct 2010 à 19:50


Re: Cherche un générateur de chiffres aléatoire paramétrable

Message #5 par shal » 08 Fév 2017 à 20:20

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)
Pas plus pire sourd qu'une oreille d'or qui veut rien entendre.
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 ;-)
Avatar de l’utilisateur
shal
100 watts
100 watts
Messages: 2039
Inscription: 21 Oct 2010 à 18:18
Localisation: Rennes


Re: Cherche un générateur de chiffres aléatoire paramétrable

Message #6 par shal » 08 Fév 2017 à 20:39

Non, c'est assez basique comme truc, tout étudiant en informatique de plus de 3 mois d'expérience y arriverait .

Par contre, je me suis planté où dans les specifs ?

EDIT :  Forcement, je réponds à un message effacé , j'ai l'air débile  :cry:

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é  :wink:
Dernière édition par shal le 08 Fév 2017 à 20:44, édité 2 fois.
Pas plus pire sourd qu'une oreille d'or qui veut rien entendre.
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 ;-)
Avatar de l’utilisateur
shal
100 watts
100 watts
Messages: 2039
Inscription: 21 Oct 2010 à 18:18
Localisation: Rennes


Re: Cherche un générateur de chiffres aléatoire paramétrable

Message #7 par zeroundemi » 08 Fév 2017 à 20:43

..........
Dernière édition par zeroundemi le 17 Fév 2017 à 02:23, édité 1 fois.
Avatar de l’utilisateur
zeroundemi
100 watts
100 watts
Messages: 2701
Inscription: 25 Oct 2010 à 19:18


Re: Cherche un générateur de chiffres aléatoire paramétrable

Message #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 ?
Avatar de l’utilisateur
PP_65
500 watts
500 watts
Messages: 27957
Inscription: 21 Oct 2010 à 19:50


Re: Cherche un générateur de chiffres aléatoire paramétrable

Message #9 par H@R » 09 Fév 2017 à 15:57

Après une lecture un peu rapide, je l'avoue, la demande ou le problème me semble bizarre ou sur-contraint :
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 ?
Avatar de l’utilisateur
H@R
50 watts
50 watts
Messages: 694
Inscription: 24 Oct 2010 à 12:36
Localisation: Lyon


Re: Cherche un générateur de chiffres aléatoire paramétrable

Message #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  :frown:

Mais le diable est dans le détail : il n'est pas préciser que les nombres doivent respecter une distribution équiprobable  :surprised:
Il est possible que le dernier ne suive pas la même loi de probabilité que les autres  :mrgreen:
Pas plus pire sourd qu'une oreille d'or qui veut rien entendre.
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 ;-)
Avatar de l’utilisateur
shal
100 watts
100 watts
Messages: 2039
Inscription: 21 Oct 2010 à 18:18
Localisation: Rennes


Re: Cherche un générateur de chiffres aléatoire paramétrable

Message #11 par AJMARS » 09 Fév 2017 à 19:49

Saint Kernighan et Saint Ritchie priez pour nous....


...
Dernière édition par AJMARS le 09 Fév 2017 à 19:53, édité 2 fois.
Vive la Basalpie libre
Avatar de l’utilisateur
AJMARS
500 watts
500 watts
Messages: 32015
Inscription: 21 Oct 2010 à 20:26
Localisation: Marseille


Re: Cherche un générateur de chiffres aléatoire paramétrable

Message #12 par shal » 09 Fév 2017 à 19:52

Chuuut  :wink:
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  :mrgreen:
Pas plus pire sourd qu'une oreille d'or qui veut rien entendre.
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 ;-)
Avatar de l’utilisateur
shal
100 watts
100 watts
Messages: 2039
Inscription: 21 Oct 2010 à 18:18
Localisation: Rennes


Re: Cherche un générateur de chiffres aléatoire paramétrable

Message #13 par AJMARS » 09 Fév 2017 à 19:53

#include <stdio.h>

Cette phrase résonne au plus profond de ma mémoire......   :wink:

...
Vive la Basalpie libre
Avatar de l’utilisateur
AJMARS
500 watts
500 watts
Messages: 32015
Inscription: 21 Oct 2010 à 20:26
Localisation: Marseille


Re: Cherche un générateur de chiffres aléatoire paramétrable

Message #14 par shal » 09 Fév 2017 à 20:00

Spécial dédicace pour André :un programme classique et vintage  a la fois :

#include <stdio.h>

int main()
{
printf("Hello World, the green!\n");
}
Pas plus pire sourd qu'une oreille d'or qui veut rien entendre.
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 ;-)
Avatar de l’utilisateur
shal
100 watts
100 watts
Messages: 2039
Inscription: 21 Oct 2010 à 18:18
Localisation: Rennes


Re: Cherche un générateur de chiffres aléatoire paramétrable

Message #15 par Hollow » 09 Fév 2017 à 20:02

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+
Dossier bi-câblage disponible par email sur demande.
Avatar de l’utilisateur
Hollow
500 watts
500 watts
Messages: 9404
Inscription: 21 Oct 2010 à 22:47
Localisation: Ch'nord


Re: Cherche un générateur de chiffres aléatoire paramétrable

Message #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é..... :cry:

A plus
André
Vive la Basalpie libre
Avatar de l’utilisateur
AJMARS
500 watts
500 watts
Messages: 32015
Inscription: 21 Oct 2010 à 20:26
Localisation: Marseille


Re: Cherche un générateur de chiffres aléatoire paramétrable

Message #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;
Pas plus pire sourd qu'une oreille d'or qui veut rien entendre.
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 ;-)
Avatar de l’utilisateur
shal
100 watts
100 watts
Messages: 2039
Inscription: 21 Oct 2010 à 18:18
Localisation: Rennes


Re: Cherche un générateur de chiffres aléatoire paramétrable

Message #18 par zeroundemi » 09 Fév 2017 à 20:42

..........
Dernière édition par zeroundemi le 17 Fév 2017 à 02:23, édité 1 fois.
Avatar de l’utilisateur
zeroundemi
100 watts
100 watts
Messages: 2701
Inscription: 25 Oct 2010 à 19:18


Re: Cherche un générateur de chiffres aléatoire paramétrable

Message #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
Avatar de l’utilisateur
Marc5036
10 watts
10 watts
Messages: 210
Inscription: 21 Oct 2010 à 20:45
Localisation: Essonne


Re: Cherche un générateur de chiffres aléatoire paramétrable

Message #20 par zeroundemi » 10 Fév 2017 à 19:21

..........
Dernière édition par zeroundemi le 17 Fév 2017 à 02:23, édité 1 fois.
Avatar de l’utilisateur
zeroundemi
100 watts
100 watts
Messages: 2701
Inscription: 25 Oct 2010 à 19:18


Suivante

Retourner vers Coup de pouce

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 10 invités