How att beräkna sannolikheter för en tre pool eliminering mekaniker?

7

Jag har kämpat för att få mitt huvud runt denna tärningspoolmekaniker antingen på anydice eller till och med ett skräddarsytt program.

Det finns 3 pooler av d6, kalla dem A, B & C:

391.133

Alla tärningar i poolerna A och B som matchar någon tärning i pool C tas bort från deras respektive pool.

Poängen är den högsta icke eliminerade tärningen i pool A eller B (+0.1 om mer än 1) och vi behöver veta det totala antalet tärningar (inte deras värden) av icke- eliminerad tärning i pool B.

Till exempel:

391.133

Mekanikern är från Technoir .

Hur modellerar jag detta?

    
uppsättning Dale M 12.08.2015 03:33

2 svar

6

Det är inte (ännu) exakt vad du ber om, men här är ett AnyDice-program som returnerar den högsta rollen i en tärningspool, med undantag för tärningar som rullas i en annan pool:

391.133

Det använder lite ganska tråkig AnyDice-syntax, så låt mig förklara några av detaljerna:

  • När du skickar en dö till en AnyDice-funktion som förväntar sig en sekvens (som EXCL:s ovan), kommer AnyDice att köra funktionen för varje tärningsrulle och summera resultaten (viktad med sannolikheten för varje rulle). Detta är i grunden en brute force approach, och det kan enkelt gå ut för stora tärningspooler, men det är väldigt mångsidigt när det fungerar. Så här hanterar jag uteslutningsmekanikern här.

  • #DICE ger antalet tärningar i poolen DICE och {1@DICE} ger de möjliga värdena för en enda dö i poolen. Det vill säga om DICE = 3d6 , därefter #DICE = 3 och {1@DICE} = {1, 2, 3, 4, 5, 6} .

  • När du jämför ett nummer till en sekvens (som i I = EXCL ), blir resultatet sant (icke-noll) om jämförelsen är sann för något element i sekvensen. Det vill säga, if I = EXCL kontrollerar i grunden huruvida I tillhör sekvensen EXCL .

Så vad slingan inuti funktionen gör är att konstruera en anpassad dö NEW som ser ut som en av tärningarna i DICE , men med alla sidor som matchar EXCL ersatt med 0. Sedan skapar POOL: (#DICE) d NEW en ny custom dice pool bestående av så många av de anpassade tärningarna som det fanns i den ursprungliga poolen DICE , och den sista raden returnerar det högsta resultatet i den poolen.

Närmare närmare, här är en version som lägger till bonusen för flera lika högsta tärningar :

391.133

Eftersom AnyDice inte stöder fraktionerade tal multiplicerar jag resultatet av rullningen med 10, så att ett resultat av 5.1 (= 5 + 0,1 bonus) är representerat som 51.

Koden ovan är exakt samma som det första programmet ovan, förutom att jag har ersatt 1@POOL med ett samtal till en hjälparfunktion som lägger till bonusen om den högsta rullningen uppträder flera gånger (och är inte noll). Hjälperfunktionen använder samma trick att ta in rollen som en sekvens med :s , så att den automatiskt blir itererad över alla möjliga resultat av rullen.

Slutligen är det här ett program som beräknar antalet ej uteslutna tärningar i pool B:

391.133

Det är samma som det första programmet, förutom att vi nu märker sidorna på våra anpassade tärningar med 0 om de är i listan med undantag och 1 annars och sedan tar summan av rullen som resultat .

Det återstående problemet är att kombinera dessa program, för att ta hänsyn till det faktum att både poolerna A och B är beroende av pool C samtidigt. Problemet är att AnyDice inte riktigt hanterar tvådimensionell produktion, men vi kan använda samma trick som vi brukade hantera 0,1 bonusen ovan, multiplicera resultatet av poolen A ytterligare med 10 innan vi lägger till resultatet av pool B, som det här :

391.133

Här består utdata av ett tresiffrigt nummer PQR , där P är den högsta icke uteslutna rullen i pool A, Q är 1 om den högsta icke-uteslutna rullen i pool A är multipel och R är siffran av icke-uteslutna rullar i pool B.

Åh, vänta! Du sa att du ville ha den högsta rollen i poolerna A och B tillsammans , inte bara den högsta rollen i A? Tja, Det kan jag också göra , även om det kräver lite omorganisation, eftersom den högsta rollen inte längre är oberoende av Antalet icke-uteslutna rullar i pool B:

391.133     
svaret ges 12.08.2015 13:54
0

Anydice rullar inte egentligen några tärningar , så du kan inte skapa poolerna (om inte jag är fel) men när du har poolerna kan detta vara vad du behöver.

Du måste ange manuellt A, B och C (överst) och sedan beräkna, välj "Roller" och rulla de två utgångarna.

PS: det finns inte 0,1 i Anydice så om numret är närvarande två gånger lägger det till 100 istället.

391.133     
svaret ges 12.08.2015 11:51