src/problems/iprb.lisp @ bd06f66ba88f
More problems
| author | Steve Losh <steve@stevelosh.com> |
|---|---|
| date | Fri, 02 Nov 2018 21:08:20 -0400 |
| parents | (none) |
| children | 11df545d1a41 |
(in-package :rosalind) ;; Probability is the mathematical study of randomly occurring phenomena. We ;; will model such a phenomenon with a random variable, which is simply ;; a variable that can take a number of different distinct outcomes depending on ;; the result of an underlying random process. ;; ;; For example, say that we have a bag containing 3 red balls and 2 blue balls. ;; If we let X represent the random variable corresponding to the color of ;; a drawn ball, then the probability of each of the two outcomes is given by ;; Pr(X=red)=35 and Pr(X=blue)=25 ;; ;; Random variables can be combined to yield new random variables. Returning to ;; the ball example, let Y model the color of a second ball drawn from the bag ;; (without replacing the first ball). The probability of Y being red depends on ;; whether the first ball was red or blue. To represent all outcomes of X and Y, ;; we therefore use a probability tree diagram. This branching diagram ;; represents all possible individual probabilities for X and Y, with outcomes ;; at the endpoints ("leaves") of the tree. The probability of any outcome is ;; given by the product of probabilities along the path from the beginning of ;; the tree; see Figure 2 for an illustrative example. ;; ;; An event is simply a collection of outcomes. Because outcomes are distinct, ;; the probability of an event can be written as the sum of the probabilities of ;; its constituent outcomes. For our colored ball example, let A be the event "Y ;; is blue." Pr(A) is equal to the sum of the probabilities of two different ;; outcomes: Pr(X=blue and Y=blue)+Pr(X=red and Y=blue), or 310+110=25 (see ;; Figure 2 above). ;; ;; Given: Three positive integers k, m, and n, representing a population ;; containing k+m+n organisms: k individuals are homozygous dominant for ;; a factor, m are heterozygous, and n are homozygous recessive. ;; ;; Return: The probability that two randomly selected mating organisms will ;; produce an individual possessing a dominant allele (and thus displaying the ;; dominant phenotype). Assume that any two organisms can mate. (define-problem iprb (data stream) "2 2 2" "0.78333" (let* ((d (read data)) (h (read data)) (r (read data)) (n (+ d h r))) ;; We could expand this all into a giant equation and cancel it out, but ;; let's just let the computer do the busywork. (flet ((p-same (x also-x) (declare (ignore also-x)) ;; P({X X}) = X/N * (X-1)/(N-1) ;; = X(X-1) / N(N-1) ;; = X²-X / N²-N (/ (- (* x x) x) (- (* n n) n))) (p-diff (x y) ;; P({X Y}) = P(X, Y) + P(Y, X) ;; = X/N * Y/N-1 + Y/N * X/N-1 ;; = XY/N(N-1) + YX/N(N-1) ;; = 2XY/N(N-1) ;; = 2XY/N²-N (/ (* 2 x y) (- (* n n) n)))) (format nil "~,5F" (+ (* (p-same d d) 1) ;; AA AA (* (p-diff d h) 1) ;; AA Aa (* (p-diff d r) 1) ;; AA aa (* (p-same h h) 3/4) ;; Aa Aa (* (p-diff h r) 1/2) ;; Aa aa (* (p-same r r) 0)))))) ;; aa aa ;; (problem-iprb) ;; (solve iprb)