4 votos

De las 84 posibilidades en una semana, quiero que 3 sean VERDADERAS

Estoy trabajando en una fase temprana de software de inicio para ayudar a otros SaaS (software como servicio) de las empresas de retener nuevos clientes. Estaremos enviando correos electrónicos automáticos diseñado para que parezca que está escrito en un one-off personal de la moda. El contenido del correo electrónico serán adaptados para reflejar la cantidad de tiempo que han invertido en la instalación de sus SaaS cuentas.

Nuestro objetivo es enviar unos tres correos por clientes nuevos por semana. Nuestra aplicación de correo electrónico envía correos electrónicos durante el "despertar" de las horas (8 de la mañana a 8 de la tarde) y se ve en el envío de correo electrónico de la historia por cada nueva cuenta del cliente una vez por hora. Así que buscando en cada cliente de correo electrónico de la historia de 84 veces por semana (7*12). Al comprobar el correo electrónico de la historia, decide si enviar un correo electrónico.

Mi acercamiento a la codificación de esta función es sólo para uso de la probabilidad de desencadenar un correo electrónico, con cierto grado de confianza, que más de una semana, el número total de correos electrónicos enviados va a ser alrededor de tres. Esto le proporcionará un montón de consistencia, mientras que al mismo tiempo, todavía parece ser "humano" en el que es aleatoria en su momento.

He probado el cálculo de este un par de veces, y mi mejor cálculo

 (1-(3/84))^84 

ha vuelto una probabilidad de .04713, pero he estado corriendo una simulación por cerca de tres semanas con 2500 perfiles de los clientes y sólo un puñado de cuentas han producido 3 correos en una semana. Claramente mis cálculos están equivocados.

Ha sido un tiempo desde que me tomó un stat curso y no estoy del todo seguro de que voy a llegar a la respuesta correcta :)

Sus pensamientos son apreciados.

6voto

Steve Puntos 477

Si se establece la probabilidad de $p$ de un correo electrónico de salir a cualquier hora del a $\frac{3}{84}$, en promedio, cada usuario recibirá 3 mensajes semanales. Para comprobar esto, tenga en cuenta que este problema es una distribución binomial con $n = 84$. Ya que el valor esperado de una distribución binomial es $np$ y le gustaría que el número medio de correos a ser 3, $84p = 3$, e $p = 3 / 84$.

Como por el grado de confianza que este será aproximadamente igual a 3, con este enfoque de la distribución de los correos electrónicos que los usuarios recibirán lucirá así:

Binomial distribution PMF with p = 3/84

Tenga en cuenta que, mientras que el 3 es el valor esperado, sólo alrededor de un 22 por ciento de usuario semanas tendrá tres mensajes de correo electrónico. Si usted encuentra esta distribución en el número de mensajes de correo electrónico es demasiado disperso-es decir, el rango de valores posibles es demasiado amplio o no está dispuesto a aceptar un 5 por ciento de posibilidades de que un usuario recibe 6 correos electrónicos, entonces usted puede desear considerar otro enfoque.

Por ejemplo, usted podría muestra 3 valores sin el reemplazo de los enteros de 0 a 83, y luego simplemente la programación de los tres mensajes de correo electrónico semanal en consecuencia. También se puede optar por arbitraria de las probabilidades para el número de correos electrónicos que se enviarán a cada usuario y, a continuación, elija al azar que muchas de las horas en las que enviar mensajes de correo electrónico. E. g. un 0.5 de probabilidad de los tres mensajes de correo electrónico, 0.25 de dos, 0.25 de cuatro, o lo que sea arbitraria distribución que le gustaría.

Desde una perspectiva de desarrollo esto podría resultar útiles en el camino si posteriormente crear métodos para aprender cómo muchos de los correos electrónicos es más probable que tenga éxito para un usuario determinado, y cuando los mensajes son más propensos a tener éxito. Lo que significa que si usted ya tiene un azar del programador en su lugar, será más fácil intercambiar para un programador que utiliza los resultados de un algoritmo de aprendizaje. (Asumiendo que usted tiene algunas de las métricas de éxito disponibles para cada mensaje, que puede ser una suposición de mi parte.)

3voto

Floris Puntos 448

Crear una lista con los clientes, cada uno aparece tres veces. Aleatorio de la lista. Envíe un correo electrónico a la primera persona en la lista. Esperar el momento adecuado (número de horas en la semana dividido por tres veces el número de clientes). Repetir.

Los anteriores garantías tres al azar correos electrónicos enviaron a cada cliente. Obviamente si no desea enviar durante ciertas horas puede limitar el número de horas en la semana y ajustar en consecuencia.

2voto

kalenjordan Puntos 128

Parece como usted desea a todos sus clientes, 1,2,3,...., y, a continuación, seleccione al azar a partir de este conjunto de números, el correo electrónico del cliente seleccionado al azar el número, el tiempo que no he recibido tres correos electrónicos. Usted necesitará continuamente ajustar el número de veces que el programa intenta enviar un correo electrónico para asegurarse de que el número de intentos es de 3*número de clientes.

Así, por ejemplo, tengo 100 clientes quiero email 3 veces, al azar intercalados a través de la semana. He creado un programa para probar y enviar 300 correos electrónicos, así que dividir (7*12)/300 para obtener la sincronización de los esfuerzos. En cada esfuerzo que elegir aleatoriamente un número entre 1 y 100, y enviar un correo electrónico a ellos, la comprobación para garantizar que el no ha recibido tres. Cerca del final de la semana, las únicas personas que reciben correos electrónicos serán uno o dos docenas de clientes que sólo han recibido uno o dos correos electrónicos.

De hecho, es probable que el programa de instalación comprueba así que todo el mundo recibe 1 antes de comenzar la aleatoriamente el envío de segunda correos electrónicos, y así sucesivamente.

Espero que esto tenga sentido.

Edit: SeanEaster de la sugerencia: "Por ejemplo, usted podría muestra 3 valores sin el reemplazo de los enteros de 0 a 83, y luego simplemente la programación de los tres mensajes de correo electrónico semanal en consecuencia." es algo similar a mi de la solución y, probablemente, la mejor manera de ir. La verdadera probabilidad de método podría de vez en cuando un cliente recibe 5 o más correos electrónicos, una pequeña posibilidad, pero hay - que va a suceder en algún momento, y eso me parece demasiado. Como sería la unidad de lejos.

Edit: Mala pseudocódigo para lo que yo estoy sugiriendo (no un gran en pseudocoding):

Estoy asumiendo que cada sábado o domingo, se ajusta el No. de los clientes para reflejar las últimas cifras.

While (execute=true){

  if(Sunday, 7 am)   
  {
    Reset everything
    start timer   
  }

  if(timer = 84/(No. of customers * No of emails desired))   {  

    reset timer    
    emailSent = false

    do{

      randomly select from 1 - No. of customers

      if(No. of emails sent to customer < 3){
        send email to customer
        emailSent = true
      }

    }
    while(emailSent = false)   
  }  

}

Creo que muestra cómo el do-while bucle que asegurarse de que los correos electrónicos son enviados únicamente si el cliente ha recibido menos de 3 (cada cliente nunca va a recibir más de tres) y la funcionalidad del temporizador se asegura de que el número correcto de esfuerzos se realiza para todo el mundo a recibir tres, con los esfuerzos espaciados uniformemente a lo largo de la semana. No puedo pensar en cómo iba a actualizar continuamente el número de clientes - nunca debería haber dicho eso. Cualquier código que yo iba a escribir tendría que ser detenido, la entrada de nuevos números y, a continuación, vuelva a ejecutar. Todavía creo que SeanEaster sugerencia he resaltado antes, es mejor - se asegura de tres mensajes de correo electrónico, de forma aleatoria a través de 84 horas, por lo que el número de clientes. Obviamente, que la instalación podría requerir un ajuste de la información de los clientes en algunos horario regular así.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X