# Newbie Mafia 2! [Mafia Win!]

#### strager wrote:

Anyway I read somewhere that if the Town doesn't choose to lynch on the first game in a nine-player game with one Mafia the Town gets a statistical advantage, assuming completely random lynching and killing. I'll calculate how this would work with the current setup later.

#### strager wrote:

with one Mafia
read the OP again. There are two Mafia.

#### strager wrote:

Anyway I read somewhere that if the Town doesn't choose to lynch on the first game in a nine-player game with one Mafia the Town gets a statistical advantage, assuming completely random lynching and killing. I'll calculate how this would work with the current setup later.
oh sorry i can't read. ^^U

bbl making dinnorz (yes, im making dinner at 3:44PM. Guests and such whoooooo)
You don't need to calculate anything, no lynch on day one is disadvantageous for town.
also in retrospect it seems kinda stupid for us to, each Day, roll a n-sided die where n is the number of remaining players and lynch that person off, then expect the mafia to do the same and us to win. takes the entire point out of the game.

#### Saturos-fangirl wrote:

also in retrospect it seems kinda stupid for us to, each Day, roll a n-sided die where n is the number of remaining players and lynch that person off, then expect the mafia to do the same and us to win. takes the entire point out of the game.
Of course such calculations ignore the Mafia or aux roles slipping up, but if the probability sways in favor of the Town by not lynching the first day there is likely a better chance of a Town win. (Note the use of maybies and perhapses.)
if we don't lynch today, the mafia get a free kill. im starting to really wonder about you, strager.
Here's what I get with my coding so far:
`:!g++ -g mafia.cpp && ./a.outSetup:        Mafia:                Normal: 2                Role blocker: 0        Town:                Normal: 9                Doctor: 0Mafia wins 64.790765% of the time with lynch on Day 1Mafia wins 78.437500% of the time with no lynch on Day 1`
Still need to code the Doctor in and the Role Blocker too. Cop is ignored and I probably won't code him because he doesn't really do anything to sway the statistics except in claims and investigations and things, which are human factors.
This map has been deleted on the request of its creator. It is no longer available.
Final results;
`:!for players in MRCDTTTTT MRTTTTTTT MMCTTTTTT MMDTTTTTT; do ./a.out \$players; echo; doneSetup:        Mafia:                Normal: 1                Role blocker: 1        Town:                Normal: 6                Doctor: 1Mafia wins 57.069781% of the time with lynch on Day 1Mafia wins 65.034042% of the time with no lynch on Day 1Setup:        Mafia:                Normal: 1                Role blocker: 1        Town:                Normal: 7                Doctor: 0Mafia wins 70.158730% of the time with lynch on Day 1Mafia wins 84.375000% of the time with no lynch on Day 1Setup:        Mafia:                Normal: 2                Role blocker: 0        Town:                Normal: 7                Doctor: 0Mafia wins 70.158730% of the time with lynch on Day 1Mafia wins 84.375000% of the time with no lynch on Day 1Setup:        Mafia:                Normal: 2                Role blocker: 0        Town:                Normal: 6                Doctor: 1Mafia wins 54.693878% of the time with lynch on Day 1Mafia wins 61.345564% of the time with no lynch on Day 1`
So I guess it is bad for us not to lynch on the first day.

Source code:
`#include <cstdio>struct Players{    enum { NumRoles = 4, NumMafiaRoles = 2, NumTownRoles = 2 };    union    {        struct        {            int mafiaNormal, mafiaRoleBlocker;            int townNormal, townDoctor;        };        struct        {            int mafiaRoles[NumMafiaRoles];            int townRoles[NumTownRoles];        };        int roles[NumRoles];    };    Players()    {        for(int i = 0; i < NumRoles; ++i)            roles[i] = 0;    }    int town() const    {        return townNormal + townDoctor;    }    int mafia() const    {        return mafiaNormal + mafiaRoleBlocker;    }    int total() const    {        return town() + mafia();    }};/* 1 = Mafia win; 0 = Town win. */double checkPossibilities(Players players, bool lynch = true){    if(players.town() <= players.mafia())        return 1;    if(players.mafia() == 0)        return 0;    if(lynch)    {        double prob = 0;        for(int role = 0; role < Players::NumRoles; ++role)        {            if(players.roles[role] == 0)                continue;            double weight = (double)players.roles[role] / players.total();            Players newPlayers = players;            --newPlayers.roles[role];            prob += weight * checkPossibilities(newPlayers, false);        }        return prob;    }    /* Handle kills. */    double prob = 0;    for(int townRole = 0; townRole < Players::NumTownRoles; ++townRole)    {        if(players.townRoles[townRole] == 0)            continue;        double weight = (double)players.townRoles[townRole] / players.town();        if(townRole != 1)   /* Doctor can't defend himself. */        {            weight *= 1 - (double)players.townDoctor / (players.total() - 1)    /* Doctor(s) defends at random. */                * (1 - (double)players.mafiaRoleBlocker / (players.town()));    /* Role blocker(s) block Doctor at random. */        }        Players newPlayers = players;        --newPlayers.townRoles[townRole];        prob += weight * checkPossibilities(newPlayers, true);    }    return prob;}Players playersFromString(const char *playerString){    Players players;    for(/* */; *playerString; ++playerString)    {        switch(*playerString)        {            case 'T':            case 'C':                ++players.townNormal;                break;            case 'D':                ++players.townDoctor;                break;            case 'M':                ++players.mafiaNormal;                break;            case 'R':                ++players.mafiaRoleBlocker;                break;        }    }    return players;}int main(int argc, char **argv){    if(argc != 2)    {        fprintf(stderr, "Argument must be string of players (_M_afia, _R_ole blocker, _T_own, _C_op, _D_octor) e.g. MDTTTTTTT\n");        return 1;    }    Players players = playersFromString(argv[1]);    printf("Setup:\n");    printf("\tMafia:\n");    printf("\t\tNormal: %d\n", players.mafiaNormal);    printf("\t\tRole blocker: %d\n", players.mafiaRoleBlocker);    printf("\tTown:\n");    printf("\t\tNormal: %d\n", players.townNormal);    printf("\t\tDoctor: %d\n", players.townDoctor);    printf("\n");    printf("Mafia wins %f%% of the time with lynch on Day 1\n", checkPossibilities(players, true) * 100);    printf("Mafia wins %f%% of the time with no lynch on Day 1\n", checkPossibilities(players, false) * 100);    return 0;}`

#### nardi11011 wrote:

One thing I don't get: why did strager reveal his role instead of just saying "I was looking at the PM in the OP and was just wondering"?
Because I don't like lying.
I call BS, you meant to claim your roll. I was in the IRC with you before the game started. You could have sent your question as a PM to Suburu. You could have easily said that you were just curious. While lies generally do not help the town, the doctor role-claiming on the first day is worse.

Also, why are you ignoring these two posts?

Neither of those two pieces of code deals with our set-up. Why are you wasting time with things that don't apply? You can code all day, but when you get down to it, we aren't lynching someone at random. All that code does is consume time and block discussion.
strager, are you NOT fucking listening? There's no point in coding over 9000 lines of code. No lynch day 1 = Free kill for mafia.

Should we also NOT lynch day 2? Day 3?

Like SFG said, I'm starting to wonder about you, strager

#### Derekku Chan wrote:

strager, are you NOT fucking listening? There's no point in coding over 9000 lines of code. No lynch day 1 = Free kill for mafia.

Should we also NOT lynch day 2? Day 3?

Like SFG said, I'm starting to wonder about you, strager

#### Saturos-fangirl wrote:

if we don't lynch today, the mafia get a free kill. im starting to really wonder about you, strager.
That may be true, but with eight players total and one Mafia you'll observe:
`:!g++ -g mafia.cpp && ./a.outSetup:        Mafia:                Normal: 1                Role blocker: 0        Town:                Normal: 7                Doctor: 0Mafia wins 54.687500% of the time with lynch on Day 1Mafia wins 45.714286% of the time with no lynch on Day 1`
What you seem to be missing is
A) We have nine people and
B) we aren't going to lynch at random
No lynch d1 is disadvantageous for town. Plus, a lynch also shows voting patterns, which helps later on in the game to identify mafia. Please don't post pages of code, no one's going to read it anyway.
strager, you don't seem to realize that in every setup for this game, there are TWO mafia. Unless you think that one of them is going to kill the other at night, then I don't know what the hell you're trying to get at.

#### nardi11011 wrote:

One thing I don't get: why did strager reveal his role instead of just saying "I was looking at the PM in the OP and was just wondering"?
Because I don't like lying.
I call BS, you meant to claim your roll. I was in the IRC with you before the game started. You could have sent your question as a PM to Suburu. You could have easily said that you were just curious. While lies generally do not help the town, the doctor role-claiming on the first day is worse.
One, before the game started, I didn't have the Doctor PM.
Two, if I lied, I would have to stay with that lie. I would rather stay with the truth.
Three, claiming Doctor was an accident. I've said this several times I think.

#### BagelBob wrote:

Also, why are you ignoring these two posts?
The second post I may have missed. I have nothing to comment on it though.
The first post I thought I responded to, but apparently I didn't. Here's my response:

#### BagelBob wrote:

From what I see in that post, I can only think that you're voting for Echo because Echo was attacking you. Is this correct? Is there anything else that I'm missing?
That is correct.

#### BagelBob wrote:

And again, Why are Derekku and 0_o above 50? Why are the rest of us below 50? Was that whole chart just BS?
It was relative suspicion at the time. The list can be disregarded now as my opinion has changed, though.

#### BagelBob wrote:

But you didn't leave them out, and now you ought to explain what you said. Who mixed up a sequence of events and which sequence of events was it? What is it that you misunderstood? Do you need clarification on some matter?
Echo misunderstood. He thought I was saying he thought I was a Mafia because he voted for me, and this is what he posted. What I had THOUGHT he posted was that I should tell him why he voted for me, or something, which was really confusing.

When I finally posted that, though, I DID understand what he meant. The few lines which probably confused people were saying I at first DIDN'T understand but now (and at the time I hit the submit button for that post) I DID.

#### BagelBob wrote:

This section is just a re-statement. I don't see any explanations, nor a need for any. Of course Echo thinks that you're a mafia. My first clue was the case, my second was the vote. I know you didn't think that Echo thought you were a vanilla townie. There was a whole section about whether or not you were fake-claiming as a townie, with Echo definitively of the mind that that would be a bad idea. You're saying that to make it look like Echo is lynching a townie. You should have at least said doctor, since that's what you're claiming to be.
Again, I wasn't trying to explain anything. I WAS re-stating.

#### BagelBob wrote:

A quick-lynch, such as the one you described, would generally be an obvious scum-tell.
Circular reasoning?

#### BagelBob wrote:

Really, adam and Echo bandwagoning? Adam was the first one to vote for you, and Echo has been making the case.
I never said that. The exact thing you quoted:

#### strager wrote:

All I meant to say there that one or two of adam, Echo, nardi, and SFG were bandwagonning as a Mafia, not all of them.

#### BagelBob wrote:

In chronological order:

#### strager wrote:

In the first case I deduce one of these to be a Mafia: adam, SFG, nardi
In the third case I deduce these are probably NOT Mafia (because they didn't jump on the bandwagon): Derekku, 0_o

For the first case it seems as if adam's vote was random and SFG's vote was only somewhat random, as was nardi's. So my suspicions for the latter two are above my suspicions for adam. From that I really can't say much more though.

For the third case, 0_o seems to be really trying to defend me which either means he's deceitful (and will kill me at night) or genuinely trying to help the town. I'm not foolish enough to denounce the former but based on my observation above he may be a Townie more than a Mafia.
I really don't know what to think of Derekku because he hasn't been doing much from what I can see, really. He could be bad at analysis, not have information to discuss, or is smart enough not to talk because he may leak information. So ... not really sure.

#### BagelBob wrote:

In addition, did you mean that adam, SFG, and nardii's votes looked like bandwagon votes? You state that you think 0_o and Derekuu were not on the bandwagon, but then you throw junk about random voting. Adam's vote started out random, but he kept posting and saying that he was reading the thread and agreed with Echo's logic.

#### BagelBob wrote:

You state that you think 0_o and Derekuu were not on the bandwagon, but then you throw junk about random voting.
Where is this "junk about random voting?"
The random voting part was for the first case, and the 0_o and Derekku part was for the third case.

----------
(Back to the original post.)

#### BagelBob wrote:

Neither of those two pieces of code deals with our set-up. Why are you wasting time with things that don't apply? You can code all day, but when you get down to it, we aren't lynching someone at random.
On the first day the first lynch is probably random anyway.
This map has been deleted on the request of its creator. It is no longer available.

#### strager wrote:

Also, some games only have one Mafia and some have three or more. (I know this specific game has two Mafia, but the game of Mafia doesn't have that ultimate rule. I was stating an example earlier.)
Then what's the fucking point of going through all of this? This game of mafia has TWO people as mafia. =|

EDIT: It should be common sense that it's a bad choice. =)
This map has been deleted on the request of its creator. It is no longer available.

#### 0_o wrote:

I think he was just pointing out that there are situations where not lynching would be in our best interests (like if there was one mafia), and he did these calculations to see if this also applied to our situation. And now we know it doesn't.

Chill out guys
Right.

#### strager wrote:

Also, some games only have one Mafia and some have three or more. (I know this specific game has two Mafia, but the game of Mafia doesn't have that ultimate rule. I was stating an example earlier.)
Then what's the fucking point of going through all of this? This game of mafia has TWO people as mafia. =|

EDIT: It should be common sense that it's a bad choice. =)
Observe my post with my final results. >_>