[rec.gambling] mgale: generate Martingale progressions

mjs@s4mjs.UUCP (M. J. Shannon) (01/05/91)

Submitted-by: mjs@s4mjs.uucp
Archive-name: mgale/part01

# This is mgale, a shell archive (shar 3.32)
# made 01/05/1991 00:40 UTC by mjs@s4mjs
# Source directory /u/mjs/acc
# existing files will NOT be overwritten
# This shar contains:
# length  mode       name
# ------ ---------- ------------------------------------------
#   1102 -rw-r--r-- README
#   1463 -rw-r--r-- mgale.c
if touch 2>&1 | fgrep 'amc' > /dev/null
 then TOUCH=touch
 else TOUCH=true
# ============= README ==============
if test X"$1" != X"-c" -a -f 'README'; then
	echo "File already exists: skipping 'README'"
echo "x - extracting README (Text)"
sed 's/^X//' << 'SHAR_EOF' > README &&
Xmgale is a program to compute `sensible' Martingale betting
Xprogressions.  It permits specifying:
X	minimum bet	(-b)
X	bet increment	(-i)
X	maximum bet	(-m)
X	payoff odds	(-o)
X	stake		(-s)
X	minimum win	(-w)
Xall on the command line.  I use it when I play roulette to generate any
Xnumber of progressions tuned how I wish to play.  Most often, the
Xvariation I play by is generated by something like:
X	mgale -b15 -i15 -m300 -o11 -s1000 -w0
Xwhich defines a table with a $5 minimum and $100 maximum, where I will
Xplay 3 different numbers straight up with my stake of $1000, and I'll
Xaccept a win that will only cover the bets made in that sequence.
XFor more information on Martingale systems, consult any useful book on
Xgambling, particularly one that covers roulette.
XI don't recommend using such a system unless you have some method of
Xpicking winning numbers that does better than random (or if you find a
Xwheel that's unbalanced in such a way that sitting on a set of numbers
Xwill do the same).
XIt is interesting to see betting sequences with a negative minimum win.
XBet with their money, not yours!
$TOUCH -am 0104194091 README &&
chmod 0644 README ||
echo "restore of README failed"
set `wc -c README`;Wc_c=$1
if test "$Wc_c" != "1102"; then
	echo original size 1102, current size $Wc_c
# ============= mgale.c ==============
if test X"$1" != X"-c" -a -f 'mgale.c'; then
	echo "File already exists: skipping 'mgale.c'"
echo "x - extracting mgale.c (Text)"
sed 's/^X//' << 'SHAR_EOF' > mgale.c &&
X#include	<stdio.h>
Xint OPT_b; int OPT_i; int OPT_o; int OPT_m; int OPT_s; int OPT_w;
Xchar use_mess[] = "-b{et} -i{ncrement} -m{ax bet} -o{dds} -s{take} -w{in}";
Xmain(argc, argv)
Xint argc;
Xchar** argv;
X	int betnum; int bet; int down = 0; int profit; int c;
X	extern char* optarg;
X	while ((c = getopt(argc, argv, "b:i:m:o:s:w:")) != EOF)
X	{
X		switch (c)
X		{
X		case 'b':	OPT_b = atoi(optarg); break;
X		case 'i':	OPT_i = atoi(optarg); break;
X		case 'm':	OPT_m = atoi(optarg); break;
X		case 'o':	OPT_o = atoi(optarg); break;
X		case 's':	OPT_s = atoi(optarg); break;
X		case 'w':	OPT_w = atoi(optarg); break;
X		default: case '?':
X			fprintf(stderr, "%s: Usage: %s %s\n",
X				argv[0], argv[0], use_mess);
X			return 2;
X		}
X	}
X	if (OPT_b <= 0) OPT_b = 1;
X	if (OPT_i <= 0) OPT_i = 1;
X	if (OPT_m <= 0) OPT_m = 100;
X	if (OPT_o <= 0) OPT_o = 11;
X	if (OPT_s <= 0) OPT_s = 100;
X	printf("Stake:       %d\n", OPT_s);
X	printf("Min bet:     %d\n", OPT_b);
X	printf("Bet incr:    %d\n", OPT_i);
X	printf("Bet pays:    %d\n", OPT_o);
X	printf("Max bet:     %d\n", OPT_m);
X	printf("Min profit:  %d\n\n", OPT_w);
X	printf("#    Bet  Down  Prof   Avg\n");
X	for (betnum = 1, bet = OPT_b, down = bet, c = 0;
X		bet <= OPT_m && down < OPT_s; ++betnum)
X	{
X		profit = (bet * (OPT_o + 1)) - down;
X		c += profit;
X		printf("%2d %5d %5d %5d %5d\n",
X			betnum, bet, down, profit, c / betnum);
X		while ((bet * (OPT_o + 1)) < (down + bet + OPT_w))
X			bet += OPT_i;
X		down += bet;
X	}
X	return 0;
$TOUCH -am 0104192191 mgale.c &&
chmod 0644 mgale.c ||
echo "restore of mgale.c failed"
set `wc -c mgale.c`;Wc_c=$1
if test "$Wc_c" != "1463"; then
	echo original size 1463, current size $Wc_c
exit 0
--------------+ <Delapsus Resurgam: When I fall I shall rise. --(10cc)>
Marty Shannon | My opinions are just that.  You may share them.  No one
mjs@s4mjs.uucp| speaks for me, and I speak only for myself -- no matter
--------------+ where I post from.  Get it?		Post no flames.