1

Voilà, j'ai un serveur avec une file de client qui ont la gentillesse d'arriver en suivant scrupuleusement une distribution de poisson, mais en fait, j'aimerais bien tirer aléatoirement des temps d'arrivée entre deux clients successifs, en partant d'une variable aléatoire uniforme (au hasard une fonction C rand() hehe)

vous sauriez comment faire ça ? grosso modo je pense qu'il faut que je prenne le log, mais mon cours de proba remonte à pas mal de temps grin
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

2

Oui le temps d'arrivée entre deux clients suit une loi exponentielle, en gros P(dt > T) = exp(-lambda*T), donc P(dt > -ln(u)/lambda) = u, donc tu peux prendre un u aléatoire entre 0 et 1, et ton temps d'attente sera -ln(u)/lambda ^^ (en faisant peut-être un peu gaffe aux cas extrêmes u proche de 0 et u proche de 1 : peut-être que si tu as un u<epsilon tu veux tirer un v différent et attendre (-ln(v)-ln(epsilon))/lambda, pour pas que la quantification de rand() casse ta distribution smile)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

3

ah voilà, je pensais prendre ln sur [1,+oo[, c'est là que je bloquais vu qu'avec une variable aléatoire d'ordi je ne pouvais pas avoir n'importe quel temps d'arrivée cheeky bon, de cette façon là on ne peut pas plus en théorie, mais je pense que c'est mieux réparti happy


merci smile
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

4

Flanker :
bon, de cette façon là on ne peut pas plus en théorie

Ben, si ? Si tu veux une erreur sur le temps d'arrivée inférieure à prettyprint.php?id=885 et que tes rand() sont entre 0 et N-1 il suffit de prendre prettyprint.php?id=992 et alors :
double s = 0;
for (;;) {
  double u = rand()/(double)N;
  if (u>=epsilon) {
    s+=-ln(u)/lambda;
    break;
  }
  s+=-ln(epsilon)/lambda;
}


(tiens c'est marrant j'y ai pensé d'un point de vue purement formel histoire d'améliorer la précision du rand(), mais l'idée est complètement triviale au fond : il s'agit de découper le temps d'attente en morceaux de taille -ln(epsilon)/lambda voire moins pour le dernier morceau ^^)[nosmile]

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

5

nan, je voulais juste dire que vu que rand renvoie 2^32 valeurs différentes, tu auras de toute façon 2^32 valeurs possibles pour ton temps d'arrivée, que tu prennes ton log entre 0 et 1 ou entre 1 et +oo smile

avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

6

Ben avec ma méthode tu as justement une infinité de valeurs possibles smile

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

7

bonjours
comment utiliser une calculatrice TI-82 pour calculer le nombre factorielle ( probas)?
merci de votre aide

8

Je ne sais pas. Essaie de regarder dans ton manuel, ça s'y trouve certainement.
avatar
I'm on a boat motherfucker, don't you ever forget