#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int randto(int n) {
int r, maxr = (RAND_MAX / n) * n;
do r
= rand(); while (r
>= maxr
); return r % n;
}
int main(void) {
int len = 0;
int count[1000] = {0};
for (int i = 0; i < 10000000; i++) {
int dealer = randto(13);
int player = randto(13);
// if there's a tie nothing happens
if (player == dealer) {
continue;
}
// choose player > dealer
if (player > 6) {
if (player > dealer) {
len++; // correct, add 1 to len
} else {
count[len]++; // wrong, update count
len = 0; // and reset len
}
} else {
// choose player < dealer
if (player < 6) {
if (player < dealer) {
len++; // correct, add 1 to len
} else {
count[len]++; // wrong, update count
len = 0; // and reset len
}
} else {
// player is exactly in the middle
// choose randomly ... or (it's the same!) choose player < dealer
if (player < dealer) {
len++; // correct, add 1 to len
} else {
count[len]++; // wrong, update count
len = 0; // and reset len
}
}
}
}
int countlow = 0;
int counthigh = 0;
for (int i = 0; i < 25; i++) countlow += count[i];
for (int i = 25; i < 1000; i++) counthigh += count[i];
printf("losses: %d; wins: %d. Percentage %.2f\n", countlow
, counthigh
, (counthigh
* 100.0)/countlow
); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHRpbWUuaD4KCmludCByYW5kdG8oaW50IG4pIHsKICAgIGludCByLCBtYXhyID0gKFJBTkRfTUFYIC8gbikgKiBuOwogICAgZG8gciA9IHJhbmQoKTsgd2hpbGUgKHIgPj0gbWF4cik7CiAgICByZXR1cm4gciAlIG47Cn0KCmludCBtYWluKHZvaWQpIHsKICAgIHNyYW5kKCh1bnNpZ25lZCl0aW1lKDApKTsKICAgIGludCBsZW4gPSAwOwogICAgaW50IGNvdW50WzEwMDBdID0gezB9OwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDAwMDAwMDsgaSsrKSB7CiAgICAgICAgaW50IGRlYWxlciA9IHJhbmR0bygxMyk7CiAgICAgICAgaW50IHBsYXllciA9IHJhbmR0bygxMyk7CiAgICAgICAgLy8gaWYgdGhlcmUncyBhIHRpZSBub3RoaW5nIGhhcHBlbnMKICAgICAgICBpZiAocGxheWVyID09IGRlYWxlcikgewogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgLy8gY2hvb3NlIHBsYXllciA+IGRlYWxlcgogICAgICAgIGlmIChwbGF5ZXIgPiA2KSB7CiAgICAgICAgICAgIGlmIChwbGF5ZXIgPiBkZWFsZXIpIHsKICAgICAgICAgICAgICAgIGxlbisrOyAgICAgICAgICAgICAgLy8gY29ycmVjdCwgYWRkIDEgdG8gbGVuCiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBjb3VudFtsZW5dKys7ICAgICAgIC8vIHdyb25nLCB1cGRhdGUgY291bnQKICAgICAgICAgICAgICAgIGxlbiA9IDA7ICAgICAgICAgICAgLy8gYW5kIHJlc2V0IGxlbgogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAJLy8gY2hvb3NlIHBsYXllciA8IGRlYWxlcgogICAgICAgICAgICBpZiAocGxheWVyIDwgNikgewogICAgICAgICAgICAgICAgaWYgKHBsYXllciA8IGRlYWxlcikgewogICAgICAgICAgICAgICAgICAgIGxlbisrOyAgICAgICAgICAvLyBjb3JyZWN0LCBhZGQgMSB0byBsZW4KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgY291bnRbbGVuXSsrOyAgIC8vIHdyb25nLCB1cGRhdGUgY291bnQKICAgICAgICAgICAgICAgICAgICBsZW4gPSAwOyAgICAgICAgLy8gYW5kIHJlc2V0IGxlbgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAJLy8gcGxheWVyIGlzIGV4YWN0bHkgaW4gdGhlIG1pZGRsZQogICAgICAgICAgICAJLy8gY2hvb3NlIHJhbmRvbWx5IC4uLiBvciAoaXQncyB0aGUgc2FtZSEpIGNob29zZSBwbGF5ZXIgPCBkZWFsZXIKICAgICAgICAgICAgICAgIGlmIChwbGF5ZXIgPCBkZWFsZXIpIHsKICAgICAgICAgICAgICAgICAgICBsZW4rKzsgICAgICAgICAgLy8gY29ycmVjdCwgYWRkIDEgdG8gbGVuCiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGNvdW50W2xlbl0rKzsgICAvLyB3cm9uZywgdXBkYXRlIGNvdW50CiAgICAgICAgICAgICAgICAgICAgbGVuID0gMDsgICAgICAgIC8vIGFuZCByZXNldCBsZW4KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGludCBjb3VudGxvdyA9IDA7CiAgICBpbnQgY291bnRoaWdoID0gMDsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjU7IGkrKykgY291bnRsb3cgKz0gY291bnRbaV07CiAgICBmb3IgKGludCBpID0gMjU7IGkgPCAxMDAwOyBpKyspIGNvdW50aGlnaCArPSBjb3VudFtpXTsKICAgIHByaW50ZigibG9zc2VzOiAlZDsgd2luczogJWQuIFBlcmNlbnRhZ2UgJS4yZlxuIiwgY291bnRsb3csIGNvdW50aGlnaCwgKGNvdW50aGlnaCAqIDEwMC4wKS9jb3VudGxvdyk7CiAgICByZXR1cm4gMDsKfQo=