Modellera en anpassad attackupplösning i AnyDice: högsta icke-drabbade dörr av poolen

3

Jag experimenterar med sannolikheten för olika "dyspool" -attackupplösningar för ett spel jag designar och vet att pooler i allmänhet kommer att vara 1-4 tärningar, med uppoffringar för att tillfälligt öka en dyspool.

Problemet jag har är följande:

  • störst angripare dö > Högsta försvarare dö drar mycket ofta och attacker går sällan igenom. Boosting erbjuder endast mindre fördelar vid 2-4 tärningar. Insatserna känns inte förhöjda.
  • Högsta attacker dö & gt = = högsta försvarare dö drar mycket ofta, så attacker lyckas ofta. Förhöjning är också lackluster vid 2-4 tärningar.

För att åtgärda detta tänker jag på följande upplösning: Första non-draw high die vinner : 6, 5 vinner mot 6, 3 , och båda vinner mot 6 , eftersom det finns tärningar kvar. Enkelt uttryckt tas dragningar ur ekvationen.

Hur skulle jag modellera detta i anydice (inga offer, bara [nondraw 5] > [nondraw 4] -liknande situationer)?

    
uppsättning Alex Mitan 05.12.2017 16:59

1 svar

6

Använd bara sekvensjämförelse.

Dokumentationen kan förklara det bättre, men det visar sig (med antagande om din avsikt) det här är verkligen trivialt att göra med Anydices inbyggda jämförelser. I dokumentationen om sekvenser:

Compared to a sequence

The sequences are compared number by number, from left to right, resulting in either a 1 or a 0.

Experimentation visar att det innebär att det faktiskt iterates genom sekvenserna, jämförande Nth-värdet för det första till Nth-värdet för det andra. Om vi har två sekvenser, A och B, itererar A > B genom sekvensen:

  • returnerar 1 om Nth-värdet för A är större än Nth-värdet för B

  • returnerar 0 om Nth-värdet på A är mindre än Nth-värdet på B

  • fortsätter till N + 1: e värdet om de är lika

  • Den returnerar också 1 om B löper ut av element före A eller 0 om A går ur element före eller samtidigt som B.

    Så om du jämför sekvenserna:

    {6,4,3,2} > {6,4,2,1} : 1

    {6,4,3,2} > {6,4,3,3} : 0

    {6,4,3,2} > {6,4,3} : 1

    {6,4,3} > {6,4,3,1} : 0

    {6,6,5} > {6,5,5,1} : 1

    Du kan göra denna typ av jämförelse med tärningar om du kastar dem till sekvenser med hjälp av en funktion innan du jämför dem.

    391.133

    När funktionen compare ATTACK to DEFENCE är påkallad konverterar ATTACK:s och DEFENCE:s i deklarationen vilka argument som helst till en sekvens. När en tärningspool omvandlas till en sekvens, blir den en sekvens som representerar resultaten av att rulla den tärningspoolen, sorterad från hög till låg (och funktionen påkallas en gång för varje möjligt resultat av rullningen och resultaten statistiken tillsammans) .

    Detta program tar tärningspooler och gör lite sekvensjämförelse för att berätta vilken som vinner under dessa omständigheter. Detta förutsätter att din regel är att 6,6,5 slår 6,5,5 , dvs den tärningen avbryter varandra på en 1: 1-basis. Om du tänkt annorlunda blir det mycket komplicerat att beskriva och Anydice börjar inte vara mycket effektivt.

    Men jag vill räkna antalet dragningar!

    Tyvärr kan sekvensjämförelse inte låta dig göra det. Men om du skriver din egen loop iterator manuellt, kommer den att springa mindre effektivt än anydice är byggd i jämförelse (så du är begränsad till mindre tärningspooler innan anydice ger upp på programmet) men du kan få denna information:

    391.133

    Vi slår i grunden över längden på den kortaste matrisen som gör elementet genom elementjämförelse, och när vi får en seger eller misslyckas returnerar vi N för framgång (eller -N för misslyckande). Det betyder att vi nådde Nth-elementet i arrayen innan vi fick ett resultat och därför avbröts N-1-tärningarna. Då finns det extra logik på slutet som fungerar som vinner om alla tärningar som det kunde jämföras drack (och säkerställer att resultatet överensstämmer med ovanstående, så subtraherar 1 från absolutvärdet för att utreda hur många tärningspar avbröts).

    Detta program implementerar ovanstående kod. I min testning kan det göra upp till 5d6 vs 5d6 innan det börjar ta för lång tid för anydice att utföra (som du förväntar dig tärningspooler i 1-4-området, förhoppningsvis är det fortfarande användbart för dig).

        
    svaret ges 05.12.2017 22:09