Showing posts with label combination. Show all posts
Showing posts with label combination. Show all posts

Saturday, April 29, 2023

TI-74 and Python (Casio fx-9750GIII): Probability

TI-74 and Python (Casio fx-9750GIII):  Probability



Today's program illustrates an approach from both the BASIC and Python programming languages. 


The program offers the user to calculate common probability problems:



1)  n!:  factorial of an integer

2)  nCr:  combinations without replacement

3)  nPr:  permutations

4)  nHr:  combinations with replacement

5) bday:  probability that n people do not share a category in common from a size of categories (i.e. birthday problem:  How many people in a room don't share a birthday?)



TI-74 BASICALC Program


200 REM probability

202 INPUT "1)n! 2)nCr 3)nPr 4)nHr 5)bday "; I

204 IF I<5 THEN INPUT "n? "; N

206 IF I>1 AND I<5 THEN INPUT "r? "; R

208 ON I GOTO 220,240,260,280,300


220 X=N

222 GOSUB 320

224 PRINT "n! = "; F: PAUSE

226 GOTO 340


240 Z=1: FOR K=(N-R+1) TO N: Z=Z*K: NEXT K

242 X=R: GOSUB 320

244 Z=Z/F

246 PRINT "nCr = "; Z: PAUSE

248 GOTO 340


260 Z=1: FOR K=(N-R+1) TO N: Z=Z*K: NEXT K

262 PRINT "nPr = "; Z: PAUSE

264 GOTO 340


280 Z=1: FOR K=N TO (N+R-1): Z=Z*K: NEXT K

282 X=R: GOSUB 320: Z=Z/F

284 PRINT "nHr = "; Z: PAUSE

286 GOTO 340


300 INPUT "# categories? "; R

302 INPUT "Sample size? "; N

304 Z=1: FOR K=1 TO (N-1): Z=Z*(1-K/R): NEXT K

306 PRINT "P(all unique) = "; Z: PAUSE

308 GOTO 340


320 F=1

322 FOR K=1 TO X: F=F*K: NEXT K

324 RETURN


340 INPUT "Again? 0:No, 1:Yes "; A

342 IF A=1 THEN 202

344 IF A=0 THEN STOP

346 GOTO 340



Python Program:  prob.py 


Program completed with the Casio fx-9750GIII.


# probability

from math import *


def fact(x):

  f=1

  for k in range(1,x+1):

    f*=k    

  return f



fc=1


while fc!=0:

  print("1)n! 2)nCr")

  print("3)nPr 4)nHr")

  print("5)bday")

  ch=int(input())

  if ch<5:

    n=int(input("n? "))

  if ch>1 and ch<5:

    r=int(input("r? "))

  if ch==1:

    f=fact(n)

    print("n! = "+str(f))

  if ch==2:

    f=fact(n)/(fact(n-r)*fact(r))

    print("nCr = "+str(f))

  if ch==3:

    f=fact(n)/fact(n-r)

    print("nPr = "+str(f))

  if ch==4:

    f=fact(n+r-1)/(fact(r)*fact(n-1))

    print("nHr = "+str(f))

  if ch==5:

    r=int(input("# categories? "))

    n=int(input("Sample size? "))

    f=1

    for k in range(n):

      f*=1-k/r

    print("p(all unique)=")

    print(str(f))

  print("Again? 0)no 1)yes")

  fc=int(input())    


Examples


1) n!  

13! = 6227020800


2) nCr

n = 13, r = 6; result:  1716


3) nPr

n = 13, r = 6; result:  1235520


4) nHr

n = 13, r = 6; result:  18564


5) bday

# categories: 13

Sample size: 6

Result:  P(all unique) = .2559703523



Wishing you an excellent day.   More BASIC and Python programming coming your way tomorrow!


Eddie


All original content copyright, © 2011-2023.  Edward Shore.   Unauthorized use and/or unauthorized distribution for commercial purposes without express and written permission from the author is strictly prohibited.  This blog entry may be distributed for noncommercial purposes, provided that full credit is given to the author. 


Wednesday, August 31, 2016

HP 12C: Combination/Binomial Distribution/Negative Binomial Distribution



HP 12C:  Combination/Binomial Distribution/Negative Binomial Distribution

Introduction and Formulas

Combination: Find the number of groups out of a possible set of objects.  The order of objects obtained does not matter. 
Store n in R1, x in R0, and p in R2.  Press [ f ] [ R↓]  (CLEAR PRGM), [ R/S ]
Formula:  COMB(n, x)  = n!/(x! * (n-x)!)

Binomial Distribution:  Find number of successes (x) in a fixed number of trials (n). 
Store n in R1, x in R0, and p in R2.  Press [ g ] [ R↓ ] (GTO) 26, [R/S]
Formula:  COMB(n, x) * p^x * (1 – p)^(n – x)

Negative Binomial Distribution:  Find the number of trials (n) needed to obtain a fixed amount of successes (x).
Store x in R1, n in R0, and p in R2.  Press [ g ] [ R↓ ] (GTO) 43, [R/S]
Formula:  COMB(x – 1, n – 1) * p^(n -1) * (1 – p)^((x - 1) - (n – 1))

In the distribution calculations, p is the probability where 0 ≤ p ≤ 1. 
Note: R3 is used as a flag, which will allowed for branching.

STEP
CODE
KEY
Combination


01
0
0
02
44, 3
STO 3
03
45, 1
RCL 1
04
43, 3
N!
05
45, 0
RCL 0
06
43, 3
N!
07
10
÷
08
45, 1
RCL 1
09
45, 0
RCL 0
10
30
-
11
43, 3
N!
12
10
÷
Flag Testing


13
45, 3
RCL 3
14
1
1
15
30
-
16
43, 35
X=0
17
43, 33, 29
GTO 29
18
45, 3
RCL 3
19
2
2
20
30
-
21
43, 35
X=0
22
43, 33, 49
GTO 49
23
33
R↓
24
33
R↓
25
43, 33, 00
GTO 00
Binomial Distribution


26
1
1
27
44, 3
STO 3
28
43, 33, 03
GTO 03
29
33
R↓
30
45, 2
RCL 2
31
45, 0
RCL 0
32
21
Y^X
33
20
*
34
1
1
35
45, 2
RCL 2
36
30
-
37
45, 1
RCL 1
38
45, 0
RCL 0
39
30
-
40
21
Y^X
41
20
*
42
43, 33, 00
GTO 00
Negative Binomial Distribution


43
1
1
44
44, 30, 1
STO- 1
45
44, 30, 0
STO- 0
46
2
2
47
44, 3
STO 3
48
43, 33, 03
GTO 03
49
33
R↓
50
33
R↓
51
45, 2
RCL 2
52
45, 0
RCL 0
53
21
Y^X
54
20
*
55
1
1
56
45, 2
RCL 2
57
30
-
58
45, 1
RCL 1
59
45, 0
RCL 0
60
30
-
61
21
Y^X
62
20
*
63
43, 33, 00
GTO 00

Examples:

Find the number of combinations of groups of 2 out of possible 12 objects. 
12 [STO] 1, 2 [STO] 0, [ f ] [ R↓ ] (CLEAR PRGM)
Result:  66

Binomial Distribution:  Toss a coin 25 times. (trails) What is the probability of tossing 10 heads? (successes)  Assume a fair coin.  The variables n = 25, x = 10, p = 0.5 
25 [ STO ] 1, 10 [ STO ] 0, 0.5 [ STO ] 2, [ g ] [ R↓ ] (GTO) 26 [ R/S ]
Result:  0.10   (0.0974166393)

Negative Binomial Distribution:  Assume a fair coin. What is the probability that the 15th tossed of heads comes on the 25th toss of the coin?  x = 15, n = 25, p = 0.5
25 [STO] 1, 15 [STO] 0, 0.5 [ STO ] 2, [ g ] [ R↓] (GTO) 43 [ R/S ]
Result:  0.12  (0.1168999672)

This blog is property of Edward Shore, 2016.

RPN HP 12C: Fibonacci and Lucas Sequences

  RPN HP 12C: Fibonacci and Lucas Sequences Golden Ratio, Formulas, and Sequences Let φ be the Golden Ratio: φ = (1 + √5) ÷ 2...