Un poco de matemáticas aquí.
Un dado regular le dará a cada número 1-6 la misma probabilidad, es decir, 1/6
. Esto se conoce como uniform distribution (la versión discreta de la misma, a diferencia de la versión continua). Lo que significa que si X
es una variable aleatoria que describe el resultado de un único papel a continuación X~U[1,6]
- lo que significa X
se distribuye por igual en contra de todos los posibles resultados de la tirada, 1 a 6.
Esto es igual a la elección de un número en [0,1)
mientras dividiéndolo en 6 secciones: [0,1/6)
, [1/6,2/6)
, [2/6,3/6)
, [3/6,4/6)
, [4/6,5/6)
, [5/6,1)
.
Solicita una distribución diferente, que es parcial. La forma más fácil de lograr esto es dividir la sección [0,1)
en 6 partes, según el sesgo que desee. Entonces, en su caso, debería dividirlo en lo siguiente: [0,0.2)
, [0.2,0.4)
, [0.4,0.55)
, 0.55,0.7)
, [0.7,0.84)
, [0.84,1)
.
Si se toma un vistazo a la wikipedia entry, se verá que en este caso, la función de probabilidad acumulativa no estará compuesta de 6 partes de igual longitud, sino más bien de 6 partes que difieren en longitud de acuerdo con la sesgo tú los diste Lo mismo aplica para la distribución masiva.
Volviendo a la pregunta, dependiendo del idioma que esté utilizando, simplemente traduzca esto de vuelta a la tirada del dado. En Python, aquí es un muy mediocre, aunque trabajo, ejemplo:
import random
sampleMassDist = (0.2, 0.1, 0.15, 0.15, 0.25, 0.15)
# assume sum of bias is 1
def roll(massDist):
randRoll = random.random() # in [0,1)
sum = 0
result = 1
for mass in massDist:
sum += mass
if randRoll < sum:
return result
result+=1
print roll(sampleMassDist)
¿No podría haberle preguntado esto en lugar de su última pregunta? http://stackoverflow.com/questions/477237/how-do-i-simulate-flip-of-biased-coin-in-python –
Creo que te refieres a un dado N-sided. Un dado N-dimensional es bastante diferente. – babbageclunk
Duplicado: http://stackoverflow.com/questions/477237/how-do-i-simulate-flip-of-biased-coin-in-python –