From 858a59e2262ae0d259d010785fc2bc7dd085e92a Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Wed, 10 Jul 2002 23:23:16 +0000 Subject: [PATCH] SGML conversion. --- Makefile | 17 +++- deal.xml | 276 ++++++++++++++++++++++++++++++++++++++----------------- 2 files changed, 202 insertions(+), 91 deletions(-) diff --git a/Makefile b/Makefile index 0fd46a5..47b574e 100644 --- a/Makefile +++ b/Makefile @@ -3,9 +3,9 @@ # # Note: When the version changes, you also have to change # the RPM spec file and the lsm. -VERS=2.1 +VERS=2.2 -SOURCES = README Makefile deal.c deal.1 deal.lsm deal.spec +SOURCES = README Makefile deal.c deal.sgml deal.lsm deal.spec deal: deal.c $(CC) -g deal.c -lm -o deal @@ -16,8 +16,15 @@ deal-$(VERS).tar.gz: $(SOURCES) (cd ..; tar -czvf deal/deal-$(VERS).tar.gz `cat deal/MANIFEST`) @(cd ..; rm deal-$(VERS)) -deal-$(VERS).shar: - shar $(SOURCES) >deal-$(VERS).shar +deal.1: deal.sgml + docbook2man deal.sgml + +install: deal.1 uninstall + cp deal /usr/bin + cp deal.1 /usr/share/man/man1/deal.1 + +uninstall: + rm -f /usr/bin/deal /usr/share/man/man1/deal.1 dist: deal-$(VERS).tar.gz @@ -32,5 +39,5 @@ rpm: dist cp $(RPMROOT)/SRPMS/deal-$(VERS)*.src.rpm . clean: - rm -f deal deal-*.tar.gz deal.shar deal.o *.rpm *~ + rm -f deal deal.1 deal-*.tar.gz deal.o *.rpm *~ diff --git a/deal.xml b/deal.xml index 7ae5384..82cde93 100644 --- a/deal.xml +++ b/deal.xml @@ -1,107 +1,211 @@ -.TH DEAL 1 "September 27, 1996" -.SH NAME -deal \- compute and display deal probabilities -.SH SYNOPSIS -.B deal [-h] [-b base] [-t turns] [-c columns] [-g] [-w] specials total -.SH DESCRIPTION -This program prints out tables of non-replacement draw probabilities, -rounded to the nearest percent. -.PP -Suppose I have M special cards in my deck and N total cards in my deck, + + + +deal +1 +September 27, 1996 + + +deal +compute and display deal probabilities + + + + + + deal -h + -b base + -t turns + -c columns + -g + -w + specialstotal + + + + +DESCRIPTION +This program prints out tables of non-replacement draw probabilities, +rounded to the nearest percent. + +Suppose I have M special cards in my deck and N total cards in my deck, and I draw k cards from that deck without replacement. Let X count -the number of special cards contained in those k drawn cards. -.PP -Then X has a hypergeometric distribution, with the following formula -for probabilities: +the number of special cards contained in those k drawn cards. -.nf +Then X has a hypergeometric distribution, with the following formula +for probabilities: + + B(M, i) * B(N-M, k-i) P(X = i) = --------------------- B(N, k) -.fi + -where B(a,b) is the binomial coefficient (read "a choose b"), and is the +where B(a,b) is the binomial coefficient (read "a choose b"), and is the number of ways to choose b objects out of a possible objects. The -formula for the binomial coefficient is: +formula for the binomial coefficient is: + + B(n,m) = n!/(m! * (n-m)!) - B(n,m) = n!/(m! * (n-m)!) +where n! is the factorial function n! = 1 * 2 * 3 * ... * n. -where n! is the factorial function n! = 1 * 2 * 3 * ... * n. -.PP -This program prints out tables of these probabilities. The `specials' +This program prints out tables of these probabilities. The `specials' and `total' arguments specify M and N. The table displays values for -ranges of k and i. -.PP -In the table output, a dot designates a probability less than .5% that -rounds to zero. Impossible outcomes are blank. -.PP -The program accepts the following options to control its output: -.TP 10 --b -Number of cards to assume in the initial hand. Note: this defaults to -7, \fBnot\fB to 0! -.TP 10 --g -Normally, the program displays the probability that you will have -\fIexactly\fR a given number of specials. With this option, it -displays the odds that you will have the given number of specials -\fIor more\fR. This option also forces -w on, to accomodate 100% -probabilities which will show up in column 0 if nowhere else. -.TP 10 --w -Force wide display (3 chars per percentage) to accommodate 100% probabilities. -.TP 10 --c -Number of table columns to generate in the report. Defaults to the -number of specials plus one additional to accommodate the zero column. -.TP 10 --h -Suppress table headers and legends. -.TP 10 --t -Set number of draws to display probabilities for (default to 20 or the -total number of cards, whichever is less) -.TP 10 --v -Verbose. Log the computation steps for each hypergeometric -coefficient to standard error. Use this for debugging if you are -a trained numerical analyst (kids, don't try this yourselves at home!). -.TP 10 --B -Binomial coefficient test. Compute and print the binomial coefficient -B(n, k) or `n choose k'. -.TP 10 --G -Gamma function test. Compute and display the log of the gamma -function of the argument. If -v tells you that the computation of +ranges of k and i. + +In the table output, a dot designates a probability less than .5% that +rounds to zero. Impossible outcomes are blank. + +The program accepts the following options to control its output: + + + + + -b + + + +Number of cards to assume in the initial hand. Note: this defaults to +7, not to 0! + + + + + + -g + + + +Normally, the program displays the probability that you will +have exactly a given number of specials. With +this option, it displays the odds that you will have the given number +of specials or more. This option also forces + on, to accomodate 100% probabilities which will +show up in column 0 if nowhere else. + + + + + + -w + + + +Force wide display (3 chars per percentage) to accommodate 100% probabilities. + + + + + + -c + + + +Number of table columns to generate in the report. Defaults to the +number of specials plus one additional to accommodate the zero column. + + + + + + -h + + + +Suppress table headers and legends. + + + + + + -t + + + +Set number of draws to display probabilities for (default to 20 or the +total number of cards, whichever is less) + + + + + + -v + + + +Verbose. Log the computation steps for each hypergeometricoefficient to standard error. Use this for debugging if you are +a trained numerical analyst (kids, don't try this yourselves at home!). + + + + + + -B + + + +Binomial coefficient test. Compute and print the binomial coefficient +B(n, k) or `n choose k'. + + + + + + -G + + + +Gamma function test. Compute and display the log of the gamma +function of the argument. If tells you that the computation of B(n, k) is blowing up, this will enable you to probe the local lgamma -function. -.TP --H -Compute the hypergeometric probability H(i, k, M, N) with arguments -supplied from the command line. For debugging. -.PP -.SH EXAMPLES -To compute the probabilities for drawing your 3 Hurloon +function. + + + + + + -H + + + +Compute the hypergeometric probability H(i, k, M, N) with arguments +supplied from the command line. For debugging. + + + + + + + +EXAMPLES +To compute the probabilities for drawing your 3 Hurloon Minotaurs during the first 20 turns from a 62-card "Magic: The -Gathering" deck (MtG starts you with 7 cards): +Gathering" deck (MtG starts you with 7 cards): - deal 3 62 + deal 3 62 -To compute your chances of having the 4 aces on the nth draw in -5-card draw poker: +To compute your chances of having the 4 aces on the nth draw in +5-card draw poker: - deal -b 5 4 52 + deal 5 4 52 -.SH BUGS -The -w and -g options widen the column width of the tables to + + +BUGS +The and options widen the column width of the tables to accommodate 100% probabilities, at the cost of making the table too wide to display on an 80-column terminal when the number of specials is more than 17. When wide display is off, on the other hand, 23 specials will fit in 80 colums, but 100% probabilities can mess up the -table formatting. -.SH AUTHOR -Eric S. Raymond . Based on the `cardprobs' -program by Jeremy York. See my home page at -http://www.ccil.org/~esr/home.html for updates and other resources. +table formatting. + + +AUTHOR +Eric S. Raymond <esr@snark.thyrsus.com>. Based on the +`cardprobs' program by Jeremy York. See my home page at http://www.tuxedo.org/~esr +for updates and other resources. + + + -- 2.43.0