php porcentagem de chance

Isso é realmente mais uma questão de abordagem, mas estou apresentando em php.

uponha que tivéssemos uma lista de quatro porcentagens de ocorrência de um evento na iteraçã

array=('walk the dog'=>.25,'read the paper'=>.25,'drink coffee'=>.0,'listen to music'=>.50)

(Chaves são apenas testes - na prática, isso será usado em um padrão de estratégia que aplica métodos diferentes a um objeto fora de chance usandocall_user_func())

Em um loop, qual seria a melhor maneira de escolher um desses eventos por seleção ajustada aleatoriamente, levando em consideração seus respectivos pesos (IE, para essa configuração específica, haverá muita música ouvida e não muita café bebeu)

Atualmente, tenho algo como:

for($i=1;$i<=3;$i++){
  $rand = 1/rand(1,10);
  //choose from the list
}

Mas isso exigiria o mapeamento das porcentagens para os intervalos de valores (50-100% tornam-se ouvindo música, 0-25% passeando com o cachorro e 25-50 lendo o jornal) porque o 'valor' dessa iteração é calculado como um ponto flutuante número entre 0 e 1. Isso altera a maneira como as porcentagens precisam ser registrada

Existe algum tipo de abordagem que preservaria a identidade dos valores como a probabilidade real de eles serem escolhidos em vez de intervalos? Definitivamente, tornaria o código mais configurável, pois tenho que tornar esses valores ajustáveis. Entre em contato se tiver sido muito vag

questionAnswers(4)

yourAnswerToTheQuestion