[Nacht 0]Die Rache der Buerger
-
Jester schrieb:
und warum sich zeus nun mit falschaussagen als retter von jochen s hinstellen will ist mir auch nicht klar.
Amnesie ist in? http://www.c-plusplus.net/forum/p2090434#2090434
-
was soll ich in der momentanen situation argumentieren? alle diskutieren nur über angervotes und tempovorteile, das bringt uns aber nicht weiter. zu diesem zeitpunkt war im spiel an sich noch fast garnichts passiert. also habe ich namen zur disposition gestellt, irgendwelche. die haben aber alle nicht reagiert.
was ist deiner meinung nach das richtige zu tun, wenn sowas komplett ignoriert wird? die beiden sollen sich melden. was ich bis jetzt von binggi gehört habe überzeugt mich nicht, und ipsec hat sich schlicht garnicht gemeldet, ich weiß nicht was schlimmer ist. warum also sollte ich wechseln?
-
Zeus schrieb:
Jester schrieb:
und warum sich zeus nun mit falschaussagen als retter von jochen s hinstellen will ist mir auch nicht klar.
Amnesie ist in? http://www.c-plusplus.net/forum/p2090434#2090434
?? das hat doch damit nix zu tun
du behauptest, dass jochens aussage, dass der geprüfte bürger bald stirbt glaskugellesen ist. das ist falsch, und die meisten hier wissen das auch. warum stellst du also die aussage in frage und tust auch noch so, als wolltest du jochen retten, der sich damit angeblich nur verdächtig macht?
warum willst du binggi unabhängig von seine fraktionszugehörigkeit prüfen?
-
Jester schrieb:
... was ich bis jetzt von binggi gehört habe überzeugt mich nicht, und ipsec hat sich schlicht garnicht gemeldet, ich weiß nicht was schlimmer ist. warum also sollte ich wechseln?
Ja schon klar, meine Kommentare waren bis jetzt nicht wirklich Produktiv, aber das kann sich ja jetzt ändern, weil ich mehr online bin/werde.
Nur weil ich 1 Rachevote gemacht habe könnt ihr mich jetzt doch nicht verurteilen...
-
So, ich war die letzten Tage unterwegs (heute Abend leider wieder), aber unterdessen habe ich ein kleines Simulationsprogramm geschrieben, um die Sache mit dem Rächer zu testen. Dabei habe ich natürlich die Bedingungen vereinfacht (7 Bürger, 2 Mafiosi, die Mafiosi wählen immer den selben Bürger, die Bürger wählen zufällig eine andere Person außer sich selbst).
Die Simulation enthält eine Reihe von Fehlern und fehlerhaften Vereinfachungen, weshalb auch die Siegchance für die Mafia zu hoch als 96% angegeben wird, trotzdem sinkt sie, wenn die Bürger jeden Abend zweimal lynchen dürfen (was eine nicht ganz richtige Vereinfachung für den Rächer ist) um 6%.Zusammengefasst, Vor und Nachteile, wenn wir den Rächer jeden Tag per Mehrheit wählen lassen:
- Vorteil: die Gewinnchance der Bürger nach dem Modell steigt um wenige Prozentpunkte - möglicherweise steigt sie in realen Spielen mehr, da wir nicht zufällig spielen
- Vorteil: Tempovorteil für die Bürger
- Nachteil: der Rächer ist einfacher von der Mafia manipulierbar, als das Kollektiv
- Nachteil: der Rächer muss lange genug überleben
- Nachteil: Temponachteil für den DetektivenIch weiß nicht recht. Ich würde zumindest in den ersten Nächten noch auf einen Rächereinsatz verzichten, wenn sich die Fronten langsam abzeichnen, können wir dann mit ihm in die Offensive gehen.
PS: das ich auf eine (wie selbst zugegeben) geratene Verdächtigung nicht reagiere, ist wohl selbstverständlich.
-
Jester schrieb:
was soll ich in der momentanen situation argumentieren? alle diskutieren nur über angervotes und tempovorteile, das bringt uns aber nicht weiter.
Warum negierst Du das? Vernünftige Argumente?
Stattdessen drückst Du mit µ einfach aufs Tempo.
"Bauchgefühle" haben bisher immer der Mafia den Sieg geschenkt und wenn ich auch nur den Ansatz einer Strategie erörtern mag, soll's schon wieder nicht recht sein? Wenigstens hat mir µ noch nicht vorgeworfen, destruktiv zu spielen, kann ja noch kommen.
Bin leider zur Gartenpflege abkommandiert und kann erst heute Abend wieder und werde mich wohl zu einem vote durchringen.
-
ipsec schrieb:
PS: das ich auf eine (wie selbst zugegeben) geratene Verdächtigung nicht reagiere, ist wohl selbstverständlich.
nein, ist es nicht. du beteiligst dich weiterhin nicht an der diskussion und gibst keine einschätzungen der situation ab.
ich zweifle übrigens die aussagekraft deiner simulation an. ich bezweifle nicht, dass die zahlen bei dir so rauskommen, aber ich bezweifle ganz stark, dass sich im echten spiel durch den frühen rächereinsatz die chancen für die bürger erhöhen.
-
ipsec schrieb:
- Nachteil: der Rächer ist einfacher von der Mafia manipulierbar, als das Kollektiv
Das hier noch, bevor ich Rasen mähen muß, wieso dürfte das so sein?
-
ipsec schrieb:
- Nachteil: der Rächer muss lange genug überleben
Ist natürlich Blödsinn, wenn der Rächer tot ist, spielen wir eben normal weiter, wie sonst ja auch.
Aber möglicherweise auch Nachteil: der Rächer könnte leichter aufgedeckt werden. Spätestens nämlich dann, wenn er selbst durch Rächervote gewählt ist.
-
Jeder kann eine Simulation schreiben, aber um zu beweisen, dass die simulation auch aussagekräfig ist, sollte man den quellcode schon mitliefern.
-
pointercrash() schrieb:
Jester schrieb:
was soll ich in der momentanen situation argumentieren? alle diskutieren nur über angervotes und tempovorteile, das bringt uns aber nicht weiter.
Warum negierst Du das? Vernünftige Argumente?
Stattdessen drückst Du mit µ einfach aufs Tempo.hab ich ja schon erklärt, und du hast es auch schon nicht verstanden, das thema ist von meiner seite aus also durch und ich verfolge nun das patentrezept nach mafia zu fahnden, indem ich leute verdächtige und sie auffordere ihre sicht der dinge darzulegen.
ja, ich drücke aufs tempo, aber nicht für einen schnellen lynch sondern für ein spiel in dem viel inhaltlich diskutiert wird und man nachher auch was draus ablesen kann.
warum wollt ihr das nicht? pointercrash? ipsec?
immerhin passiert ja so langsam was, auch wenn noch nicht alle mitziehen.
-
@ipsec, was hast du denn da genau reinprogrammiert? hatte TGGCs simulator nicht für 7 vs. 2 ohne sonderrollen schon fast 50:50? wieso wird das bei dir so grandios viel schlechter?
-
pointercrash() schrieb:
ipsec schrieb:
- Nachteil: der Rächer ist einfacher von der Mafia manipulierbar, als das Kollektiv
Das hier noch, bevor ich Rasen mähen muß, wieso dürfte das so sein?
Möglicherweise bringen z.B. die Mafiosi überzeugende Argumente, warum der Rächer an einem bestimmten Tag nicht den mit der Mehrheit, sondern vielleicht den Zweiten wählen sollte. Das Lynchen ist ja mehr oder weniger final, dort müssen die Mafiosi irgendwie alle (oder zumindest die meisten), die für sie voten, davon überzeugen, jemand anderen zu nehmen. Sollten sie auf der Abschussliste des Rächers stehen, beschränkt sich die Menge der zu überzeugenden Personen auf genau diesen.
Jester schrieb:
ipsec schrieb:
PS: das ich auf eine (wie selbst zugegeben) geratene Verdächtigung nicht reagiere, ist wohl selbstverständlich.
nein, ist es nicht.
Ich bitte dich. Du räts irgendwelche Namen und meiner ist zufällig dabei. Was erwartest du? Das ich mich weitschweifend verteidige? Oder gar ein tränenreiches Geständnis, dass ich Mafioso sei und du mich ertappt hast? Wenn du konkrete Anhaltspunkte hast, die mich verdächtig machen, werde ich mich auch dazu äußern.
Jester schrieb:
du beteiligst dich weiterhin nicht an der diskussion und gibst keine einschätzungen der situation ab.
Wie ich schon sagte ich war unterwegs, bin vorhin gerade erst wiedergekommen. So viel Zeit bleibt da nicht, das Simulationsprogramm habe ich auch nur vorhin in 5min kurz runtergetippt.
Jester schrieb:
ich zweifle übrigens die aussagekraft deiner simulation an. ich bezweifle nicht, dass die zahlen bei dir so rauskommen, aber ich bezweifle ganz stark, dass sich im echten spiel durch den frühen rächereinsatz die chancen für die bürger erhöhen.
Im Prinzip ist es mehr oder weniger logisch. Das Lynchen ist die Waffe der Bürger, also ist es (rein vom System her) besser, wenn sie mehr lynchen können. Allerdings gebe ich dir Recht, dass im realen Spiel noch viele weitere Faktoren eine Rolle spielen. Deshalb schlug ich auch vor, zumindest am Anfang des Spiels den Rächer noch nicht aktiv werden zu lassen. Und die Erhöhung der Gewinnwahrscheinlichkeit betrug schlussendlich auch nur 6 Prozentpunkte.
-
Jester schrieb:
@ipsec, was hast du denn da genau reinprogrammiert? hatte TGGCs simulator nicht für 7 vs. 2 ohne sonderrollen schon fast 50:50? wieso wird das bei dir so grandios viel schlechter?
nur damit du das nicht übersiehst, weil wir quasi zeitgleich gepostet haben. der code dürfte ja nicht so lang sein, magst du ihn irgendwo pasten?
ich erwarte ganz einfach, dass du dich sinnvoll zum spielinhalt äußerst, solange das nicht passiert bleibt mein vote auf dir, so einfach ist das. da bis jetzt keiner drauf einsteigt dürfte es dir ja auch nicht besonders weh tun. wenn du dann aktiv bist, schauen wir weiter.
-
Ok, die Simulation: ist nicht sehr hübsch, wie gesagt nur runtergetippt. Zeile 73 einkommentieren, wenn man den Rächer simulieren will.
#include <iostream> #include <vector> #include <algorithm> #include <cstdlib> #include <numeric> #include <ctime> const unsigned player_count = 10; const unsigned scum_count = 2; struct setup { unsigned townies_alive; unsigned scum_alive; setup() : townies_alive(player_count - scum_count), scum_alive(scum_count) {} unsigned players_alive() { return townies_alive + scum_alive; } }; bool town_wins(const setup& s) { return s.scum_alive == 0; } bool scum_wins(const setup& s) { return s.scum_alive >= s.townies_alive; } void do_murder(setup& s) { // one townie is killed if(s.townies_alive > 0) --s.townies_alive; } void do_lynch(setup& s) { std::vector<unsigned> votes(s.players_alive()); // scum votes exactly one townie votes[0] += s.scum_alive; for(unsigned i = 0; i < s.townies_alive; ++i) { unsigned vote; while((vote = rand() % s.players_alive()) == i); ++votes[vote]; } // find maximum unsigned max_idx = std::max_element(votes.begin(), votes.end()) - votes.begin(); if(max_idx < s.townies_alive) --s.townies_alive; else --s.scum_alive; } // returns true, when mafia has won bool game() { setup s; for(;;) { // simulate day and night do_lynch(s); //do_lynch(s); if(town_wins(s)) return false; do_murder(s); if(scum_wins(s)) return true; } } int main() { const int games_count = 100000; int scum_wins = 0; std::srand(std::time(0)); for(int i = 0; i < games_count; ++i) { if(game()) ++scum_wins; if(i % 10000 == 0 && i > 0) std::cout << i << '\n'; } std::cout << static_cast<double>(scum_wins) / games_count * 100 << "% scum wins\n"; }
Die Mafioso setzen immer alle ihre Stimmen auf einen Bürger, die Bürger verteilen ihre zufällig außer auf sich.
Fehler, die ich entdeckt habe:
- wenn Mafioso und Bürger Gleichstand haben, wird immer der Bürger gelyncht
- der Rächer wird auch aktiv, wenn ein Mafioso starb
- der Rächer lebt bis zum Ende des SpielsMöglicherweise findet ihr auch noch Fehler. Allen Fehlern zum Trotz sinkt aber die Mafiasiegchance mit Rächer um wenige Prozentpunkt, das ist die wichtige Information.
Viel schreiben kann ich heute aber nicht mehr, ich mache in einer halben Stunde schon wieder los und bin erst morgen wieder da.
-
Jester schrieb:
du behauptest, dass jochens aussage, dass der geprüfte bürger bald stirbt glaskugellesen ist. das ist falsch, und die meisten hier wissen das auch. warum stellst du also die aussage in frage und tust auch noch so, als wolltest du jochen retten, der sich damit angeblich nur verdächtig macht?
Trotzdem widerspreche ich dir, es ist Glaskugellesen. Soll ich jetzt dir über mathematische Weisheiten vorschwaffeln, dass man Aussagen von Mengen nicht auf Elemente übertragbar sind. Soll ich dir etwas über die Dynamik diesen Spiel erzählen, dass man seine Strategie nicht festsetzten soll. Auch wenn es so kommt, dass der enttarnte Bürger sofort von der Mafia kalt gemacht, dies ändert nix ein mein überzeugten Fehlwissen. Im letzten Spiel hat Jochen Sachverhalte zusammengereimt, die unvollständig und falsch schlussgefolgert waren. Auch ich hätte ihm damals gehängt - tja. Wie hoch ist die Wahrscheinlichkeit, dass die Mafia den enttarten Bürger hängen. Würdest du dein Kopf, darauf verwetten? Also, solch ein Irrtum verwirrt nur.
Jester schrieb:
warum willst du binggi unabhängig von seine fraktionszugehörigkeit prüfen?
Ist eine Idee die ich hier reingeworfen habe. Hast du noch garnicht gemerkt, dass ich noch garnicht gevotet habe?
-
@ipsec: Kann es sein, dass in deiner Simulation die Bürger eventuell mit ihrer eigenen Stimme gelyncht werden?
-
Vergesst meinen letzten Post, ich hätte mal besser lesen sollen
-
/votecount
3x Zeus - yahendrik, Jochen S., SideWinder
1x yahendrik - alogheo
1x ipsec - Jester
1x Binggi - µ
1x µ - Binggi6 Stimmen fuer eine Mehrheit noetig
-
@ipsec: in deinem Programm tötet der Rächer in jedem Fall einen Bürger. Und es ist klar, dass er den Bürgern nicht hilft, wenn er nur Bürger tötet.
Angenommen wir verwenden das avengervote, dann müsste man für do_murder() die do_lynch()-funktion übernehmen, und leicht abändern (Anzahl Mitspieler+1 & Anzahl Bürger/Mafioso auf die Werte vor der Lynchung setzen, da auch der gelynchte Spieler vor seinem Tod sein avengervote abgeben kann).Das geänderte Programm (jetzt vlt. noch ein bisschen unschöner, aber naja...):
#include <iostream> #include <vector> #include <algorithm> #include <cstdlib> #include <numeric> #include <ctime> const unsigned player_count = 10; const unsigned scum_count = 2; unsigned old_townies_alive; unsigned old_scums_alive; struct setup { unsigned townies_alive; unsigned scum_alive; setup() : townies_alive(player_count - scum_count), scum_alive(scum_count) {} unsigned players_alive() { return townies_alive + scum_alive; } }; bool town_wins(const setup& s) { return s.scum_alive == 0; } bool scum_wins(const setup& s) { return s.scum_alive >= s.townies_alive; } void do_murder(setup& s) { std::vector<unsigned> votes(s.players_alive()+1); // scum votes exactly one townie votes[0] += old_scums_alive; for(unsigned i = 0; i < old_townies_alive; ++i) { unsigned vote; while((vote = rand() % s.players_alive()+1) == i); ++votes[vote]; } // find maximum unsigned max_idx = std::max_element(votes.begin(), votes.end()) - votes.begin(); if(max_idx < old_townies_alive) --s.townies_alive; else --s.scum_alive; } void do_lynch(setup& s) { std::vector<unsigned> votes(s.players_alive()); // scum votes exactly one townie votes[0] += s.scum_alive; for(unsigned i = 0; i < s.townies_alive; ++i) { unsigned vote; while((vote = rand() % s.players_alive()) == i); ++votes[vote]; } // find maximum unsigned max_idx = std::max_element(votes.begin(), votes.end()) - votes.begin(); old_townies_alive = s.townies_alive; old_scums_alive = s.scum_alive; if(max_idx < s.townies_alive) --s.townies_alive; else --s.scum_alive; } // returns true, when mafia has won bool game() { setup s; for(;;) { // simulate day and night do_lynch(s); //do_lynch(s); if(town_wins(s)) return false; if(scum_wins(s)) return true; do_murder(s); if(town_wins(s)) return false; if(scum_wins(s)) return true; } } int main() { const int games_count = 100000; int scum_wins = 0; std::srand(std::time(0)); for(int i = 0; i < games_count; ++i) { if(game()) ++scum_wins; if(i % 10000 == 0 && i > 0) std::cout << i << '\n'; } std::cout << static_cast<double>(scum_wins) / games_count * 100 << "% scum wins\n"; }
Ohne Doppellynchung: 85% - 86% Siegwahrscheinlichkeit für Mafia
Mit Doppellynchung: 74% Siegwahrscheinlichkeit für MafiaJochen S. schrieb:
Ich verstehe nicht, warum die Mafia durch Doppellynchungen weniger leute töten könnte.
Absolut gesehen, ändert sich da nichts. Aber relativ zu den Bürgern halbiert sich deren Anzahl an Morden.
Also, neuer Versuch :
Man muss das so sehen: auf 2 Lynchungen kommt dann 1 Mord durch die Mafia. Das entspricht der SituationTag 1 - Lynchung
Nacht 1 - kein Mord
Tag 2 - Lynchung
Nacht 2 - MordUnd ihr könnt mir nicht erzählen, dass es einen Nachteil für die Bürger gibt, wenn die Mafia in einer Nacht keinen tötet.