@jjlmoya/utils-tabletop 1.34.0 → 1.37.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +18 -4
- package/scripts/postbuild.mjs +17 -0
- package/scripts/postinstall.mjs +2 -4
- package/src/category/index.ts +3 -1
- package/src/components/ProductionBreadcrumb.astro +132 -0
- package/src/components/ProductionWidget.astro +182 -0
- package/src/entries.ts +2 -0
- package/src/i18n/header-ui.ts +15 -0
- package/src/i18n/language-ui.ts +9 -0
- package/src/i18n/languages.ts +24 -0
- package/src/identity/brands.ts +5 -0
- package/src/index.ts +1 -0
- package/src/layouts/ProductionCategoryPage.astro +184 -0
- package/src/layouts/ProductionPage.astro +209 -0
- package/src/layouts/ProductionUtilityPage.astro +237 -0
- package/src/mfe/assets.ts +15 -0
- package/src/mfe/category-ui.ts +26 -0
- package/src/mfe/routes.ts +50 -0
- package/src/pages/[locale]/[utilities]/[categories]/[category]/[slug].astro +100 -0
- package/src/pages/[locale]/[utilities]/[categories]/[category].astro +44 -0
- package/src/pages/index.astro +1 -1
- package/src/pages/mfe-sitemaps/[locale]/[vertical]/sitemap.xml.ts +75 -0
- package/src/pages/utilidades/[slug].astro +90 -0
- package/src/pages/utilidades/categorias/[category].astro +38 -0
- package/src/tests/category_ui.test.ts +16 -0
- package/src/tests/locale_completeness.test.ts +1 -1
- package/src/tests/mfe_assets_contract.test.ts +44 -0
- package/src/tests/qa-test-helpers.ts +32 -0
- package/src/tests/qa_bibliography_links.test.ts +46 -0
- package/src/tests/qa_claim_evidence.test.ts +69 -0
- package/src/tests/qa_logic_reference_coverage.test.ts +46 -0
- package/src/tests/qa_runtime_i18n.test.ts +100 -0
- package/src/tests/registry_contract.test.ts +67 -0
- package/src/tests/routing_contract.test.ts +41 -0
- package/src/tests/tool_validation.test.ts +1 -1
- package/src/tests/translation_copy.test.ts +0 -1
- package/src/tool/board-game-timer/component.astro +0 -1
- package/src/tool/board-game-timer/i18n/en.ts +1 -2
- package/src/tool/board-game-timer/i18n/es.ts +2 -2
- package/src/tool/card-draw-odds-calculator/bibliography.astro +16 -0
- package/src/tool/card-draw-odds-calculator/bibliography.ts +7 -0
- package/src/tool/card-draw-odds-calculator/card-draw-odds-calculator.css +382 -0
- package/src/tool/card-draw-odds-calculator/component.astro +88 -0
- package/src/tool/card-draw-odds-calculator/controller.ts +118 -0
- package/src/tool/card-draw-odds-calculator/dom-views.ts +90 -0
- package/src/tool/card-draw-odds-calculator/entry.ts +26 -0
- package/src/tool/card-draw-odds-calculator/evaluator.ts +30 -0
- package/src/tool/card-draw-odds-calculator/i18n/de.ts +48 -0
- package/src/tool/card-draw-odds-calculator/i18n/en.ts +76 -0
- package/src/tool/card-draw-odds-calculator/i18n/es.ts +48 -0
- package/src/tool/card-draw-odds-calculator/i18n/fr.ts +48 -0
- package/src/tool/card-draw-odds-calculator/i18n/id.ts +27 -0
- package/src/tool/card-draw-odds-calculator/i18n/it.ts +15 -0
- package/src/tool/card-draw-odds-calculator/i18n/ja.ts +15 -0
- package/src/tool/card-draw-odds-calculator/i18n/ko.ts +15 -0
- package/src/tool/card-draw-odds-calculator/i18n/nl.ts +15 -0
- package/src/tool/card-draw-odds-calculator/i18n/pl.ts +15 -0
- package/src/tool/card-draw-odds-calculator/i18n/pt.ts +15 -0
- package/src/tool/card-draw-odds-calculator/i18n/ru.ts +15 -0
- package/src/tool/card-draw-odds-calculator/i18n/sv.ts +15 -0
- package/src/tool/card-draw-odds-calculator/i18n/tr.ts +15 -0
- package/src/tool/card-draw-odds-calculator/i18n/zh.ts +15 -0
- package/src/tool/card-draw-odds-calculator/index.ts +11 -0
- package/src/tool/card-draw-odds-calculator/logic.test.ts +50 -0
- package/src/tool/card-draw-odds-calculator/logic.ts +100 -0
- package/src/tool/card-draw-odds-calculator/seo.astro +16 -0
- package/src/tool/card-draw-odds-calculator/storage.ts +22 -0
- package/src/tool/card-draw-odds-calculator/ui.ts +37 -0
- package/src/tool/dice-roller-simulator/i18n/es.ts +3 -3
- package/src/tool/dungeon-map-generator/component.astro +16 -12
- package/src/tool/dungeon-map-generator/dom-views.ts +5 -4
- package/src/tool/dungeon-map-generator/i18n/es.ts +2 -2
- package/src/tool/encounter-difficulty-calculator/dom-views.ts +8 -1
- package/src/tool/fantasy-runes-translator/component.astro +0 -1
- package/src/tool/fantasy-runes-translator/logic.test.ts +32 -0
- package/src/tool/first-player-selector/component.astro +0 -1
- package/src/tool/first-player-selector/i18n/en.ts +1 -1
- package/src/tool/first-player-selector/i18n/es.ts +3 -3
- package/src/tool/hidden-role-dealer/component.astro +0 -1
- package/src/tool/lunar-tide-tracker/component.astro +0 -1
- package/src/tool/mus-scoreboard/component.astro +3 -4
- package/src/tool/mus-scoreboard/controller.ts +2 -1
- package/src/tool/mus-scoreboard/dom-views.ts +6 -1
- package/src/tool/rpg-initiative-tracker/component.astro +0 -1
- package/src/tool/rpg-settlement-exploration-map-generator/component.astro +14 -4
- package/src/tool/rpg-settlement-exploration-map-generator/editor.ts +38 -6
- package/src/tool/scatter-direction-selector/component.astro +0 -1
- package/src/tool/score-tracker/component.astro +0 -1
- package/src/tool/token-stamp-studio/component.astro +0 -1
- package/src/tools.ts +2 -0
- package/src/types.ts +6 -8
- package/src/worker.ts +26 -0
- package/src/pages/[locale]/[slug].astro +0 -162
- package/src/pages/[locale].astro +0 -251
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { CardDrawInput } from './logic';
|
|
2
|
+
|
|
3
|
+
export type InputErrorKey = 'invalidDeck' | 'invalidCopies' | 'invalidHand' | 'invalidDraws' | 'invalidTurns';
|
|
4
|
+
|
|
5
|
+
export interface InputEvaluation {
|
|
6
|
+
valid: boolean;
|
|
7
|
+
errorKey?: InputErrorKey;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const invalidDeckSize = (input: CardDrawInput): boolean => !Number.isInteger(input.deckSize) || input.deckSize < 1;
|
|
11
|
+
|
|
12
|
+
const invalidCopies = (input: CardDrawInput): boolean => !Number.isInteger(input.targetCopies) || input.targetCopies < 0 || input.targetCopies > input.deckSize;
|
|
13
|
+
|
|
14
|
+
const invalidOpeningHand = (input: CardDrawInput): boolean => !Number.isInteger(input.openingHand) || input.openingHand < 0 || input.openingHand > input.deckSize;
|
|
15
|
+
|
|
16
|
+
const invalidDrawRate = (input: CardDrawInput): boolean => !Number.isInteger(input.drawsPerTurn) || input.drawsPerTurn < 0;
|
|
17
|
+
|
|
18
|
+
const invalidTurn = (input: CardDrawInput): boolean => !Number.isInteger(input.throughTurn) || input.throughTurn < 0 || input.throughTurn > 60;
|
|
19
|
+
|
|
20
|
+
export const evaluateInput = (input: CardDrawInput): InputEvaluation => {
|
|
21
|
+
const checks: [boolean, InputErrorKey][] = [
|
|
22
|
+
[invalidDeckSize(input), 'invalidDeck'],
|
|
23
|
+
[invalidCopies(input), 'invalidCopies'],
|
|
24
|
+
[invalidOpeningHand(input), 'invalidHand'],
|
|
25
|
+
[invalidDrawRate(input), 'invalidDraws'],
|
|
26
|
+
[invalidTurn(input), 'invalidTurns'],
|
|
27
|
+
];
|
|
28
|
+
const failure = checks.find(([invalid]) => invalid);
|
|
29
|
+
return failure ? { valid: false, errorKey: failure[1] } : { valid: true };
|
|
30
|
+
};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
3
|
+
import type { CardDrawOddsUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
export const content: ToolLocaleContent<CardDrawOddsUI> = {
|
|
6
|
+
slug: 'karten-ziehwahrscheinlichkeit-rechner',
|
|
7
|
+
title: 'Rechner für Karten Ziehchancen',
|
|
8
|
+
description: 'Berechne mit der hypergeometrischen Verteilung die Chance, bis zu einem bestimmten Zug mindestens eine Kopie einer Karte zu ziehen.',
|
|
9
|
+
ui: {
|
|
10
|
+
configureLabel: 'Deckregeln festlegen', configureHint: 'Passe Deck, Hand, Ziehen und Mulligan an. Die Ergebnisse ändern sich sofort.',
|
|
11
|
+
presetLabel: 'Ausgangspunkt', presetCustom: 'Eigene Regeln', presetStandard: '60 Karten · 4 Kopien', presetLimited: '40 Karten · 4 Kopien', presetSingleton: '100 Karten · 1 Kopie',
|
|
12
|
+
deckSizeLabel: 'Deckgröße', targetCopiesLabel: 'Kopien der Karte', openingHandLabel: 'Starthand', drawsPerTurnLabel: 'Gezogene Karten pro Zug', throughTurnLabel: 'Bis Zug anzeigen',
|
|
13
|
+
mulliganLabel: 'Mulligan-Modell', mulliganNone: 'Kein Mulligan', mulliganFullRedraw: 'Nach Fehlen neu ziehen', visualLabel: 'Dein Ziehpfad', visualHint: 'Der Kartenfächer öffnet sich, wenn weitere Karten in die Stichprobe kommen.',
|
|
14
|
+
openingHandStage: 'Starthand', turnLabel: 'Zug', cardsSeenLabel: 'Gesehene Karten', finalChanceLabel: 'Chance bis zum letzten Zug', expectedCopiesLabel: 'Erwartete Kopien bis dahin', probabilityByTurnLabel: 'Wahrscheinlichkeit pro Zug', explanationLabel: 'Mindestens eine Kopie',
|
|
15
|
+
noMulliganNote: 'Ohne Mulligan: Das Modell zählt eine Stichprobe aus dem gemischten Deck.', fullRedrawNote: 'Nach Fehlen neu ziehen: Enthält die Starthand keine Kopie, wird sie einmal vollständig ersetzt.', invalidInput: 'Prüfe die Deckregeln, um fortzufahren.', invalidDeck: 'Wähle eine gültige Deckgröße.', invalidCopies: 'Die Kopien müssen zwischen null und der Deckgröße liegen.', invalidHand: 'Die Starthand darf nicht größer als das Deck sein.', invalidDraws: 'Gezogene Karten pro Zug müssen mindestens null sein.', invalidTurns: 'Wähle einen Zug zwischen null und 60.', cardsLabel: 'Karten', copyLabel: 'Kopien',
|
|
16
|
+
},
|
|
17
|
+
seo: [
|
|
18
|
+
{ type: 'title', level: 2, text: 'Karten-Ziehchancen für Tabletop-Decks berechnen' },
|
|
19
|
+
{ type: 'paragraph', html: 'Dieser Rechner zeigt, wie wahrscheinlich es ist, bis zu einem bestimmten Zug mindestens eine gesuchte Karte zu sehen. Gib Deckgröße, Kopien, Starthand, Ziehrate und Mulligan-Regel ein und vergleiche den Verlauf Zug für Zug.' },
|
|
20
|
+
{ type: 'paragraph', html: 'Die hypergeometrische Verteilung passt zu Kartenstapeln, weil ohne Zurücklegen gezogen wird. Deshalb eignet sich das Modell für Sammelkartenspiele, Brettspiele, Limited-Decks und andere endliche Kartenpools.' },
|
|
21
|
+
{ type: 'title', level: 2, text: 'Die Zeitleiste richtig lesen' },
|
|
22
|
+
{ type: 'list', items: ['Die Starthand ist die erste Stichprobe aus dem gemischten Deck.', 'Jeder Zug fügt die eingestellte Zahl gezogener Karten hinzu.', 'Der Prozentwert bedeutet mindestens eine Kopie, nicht genau eine.', 'Erwartete Kopien ist ein eigener Durchschnittswert und misst nicht dasselbe wie die Trefferchance.'] },
|
|
23
|
+
{ type: 'title', level: 2, text: 'Mulligan-Annahmen bleiben einstellbar' },
|
|
24
|
+
{ type: 'paragraph', html: 'Die Option zum erneuten Ziehen bildet eine einfache Regel ab: Eine Starthand mit Zielkarte wird behalten; bei keinem Treffer wird sie einmal vollständig ersetzt. Teil-Mulligans, Scry-Effekte, Tutoren und spielabhängige Entscheidungen sind nicht enthalten.' },
|
|
25
|
+
{ type: 'tip', title: 'Nutze die Regeln deines Spiels', html: 'Ändere Starthand, zusätzliche Ziehschritte und Mulligan-Modell, wenn dein Spiel andere Regeln hat. Das Ergebnis hängt immer von diesen Regeln und der Kopienzahl ab.' },
|
|
26
|
+
{ type: 'title', level: 2, text: 'Die hypergeometrische Idee in einer Zeile' },
|
|
27
|
+
{ type: 'paragraph', html: 'Für n Karten aus einem Deck mit N Karten und K Zielkopien ist die Chance ohne Treffer C(N − K, n) / C(N, n). Der Rechner verwendet das Gegenereignis 1 − ohne Treffer und liefert damit die Chance auf mindestens eine Zielkarte.' },
|
|
28
|
+
{ type: 'diagnostic', variant: 'info', title: 'Was dieser Rechner nicht simuliert', badge: 'GRENZEN', html: 'Benannte Kartenauswahl, Ersatzeffekte, Scrying, Tutoren, mehrere Ziele und ein vollständiger Spielzustand fehlen. Nutze das Ergebnis als Ausgangswert und ergänze besondere Regeln separat.' },
|
|
29
|
+
],
|
|
30
|
+
faq: [
|
|
31
|
+
{ question: 'Welche Formel wird für Karten-Ziehchancen verwendet?', answer: 'Für mindestens eine Kopie in n Karten gilt 1 − C(N − K, n) / C(N, n), wobei N die Deckgröße und K die Kopienzahl ist.' },
|
|
32
|
+
{ question: 'Funktioniert der Rechner für eine Ziehung von 5 Karten?', answer: 'Ja. Setze die Starthand auf 5 und wähle Ziehungen und Züge passend zu deinem Spiel.' },
|
|
33
|
+
{ question: 'Wie funktioniert die Mulligan-Option?', answer: 'Bei einem Fehlschlag wird eine Starthand ohne Zielkopie einmal vollständig ersetzt. Das ist bewusst einfacher als spielabhängige Teil-Mulligans.' },
|
|
34
|
+
{ question: 'Warum unterscheidet sich die erwartete Kopienzahl von der Trefferchance?', answer: 'Die Trefferchance fragt nach einer oder mehr Kopien. Die erwartete Kopienzahl ist der durchschnittliche Kopienwert der Stichprobe.' },
|
|
35
|
+
],
|
|
36
|
+
bibliography,
|
|
37
|
+
howTo: [
|
|
38
|
+
{ name: 'Deckgröße und Kopien eingeben', text: 'Lege die Gesamtzahl der Karten und die Zahl der gesuchten Kopien fest.' },
|
|
39
|
+
{ name: 'Starthand und Ziehregeln anpassen', text: 'Gib Handgröße, Karten pro Zug und den letzten anzuzeigenden Zug ein.' },
|
|
40
|
+
{ name: 'Mulligan-Modell wählen', text: 'Nutze keinen Mulligan für eine durchgehende Stichprobe oder einen vollständigen Ersatz nach einem Fehlschlag.' },
|
|
41
|
+
{ name: 'Zeitleiste lesen', text: 'Vergleiche die Chance auf mindestens eine Kopie in der Starthand und in jedem Zug.' },
|
|
42
|
+
],
|
|
43
|
+
schemas: [
|
|
44
|
+
{ '@context': 'https://schema.org', '@type': 'SoftwareApplication', name: 'Rechner für Karten-Ziehchancen', applicationCategory: 'GameApplication', operatingSystem: 'Web', description: 'Karten-Ziehchancen für endliche Tabletop-Decks.' },
|
|
45
|
+
{ '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: [{ '@type': 'Question', name: 'Welche Formel wird für Karten-Ziehchancen verwendet?', acceptedAnswer: { '@type': 'Answer', text: 'Der Rechner verwendet das Gegenereignis der hypergeometrischen Wahrscheinlichkeit ohne Treffer.' } }] },
|
|
46
|
+
{ '@context': 'https://schema.org', '@type': 'HowTo', name: 'Karten-Ziehchancen berechnen', step: [{ '@type': 'HowToStep', name: 'Deckregeln setzen', text: 'Gib Deckgröße, Kopien, Handgröße, Ziehungen und Züge ein.' }, { '@type': 'HowToStep', name: 'Ergebnis lesen', text: 'Vergleiche die Chance auf mindestens eine Kopie in der Zeitleiste.' }] },
|
|
47
|
+
],
|
|
48
|
+
};
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
3
|
+
import type { CardDrawOddsUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
export const content: ToolLocaleContent<CardDrawOddsUI> = {
|
|
6
|
+
slug: 'card-draw-odds-calculator',
|
|
7
|
+
title: 'Card Draw Odds Calculator',
|
|
8
|
+
description: 'Calculate the chance of drawing at least one copy of a card from your deck by the opening hand and each turn, using the exact hypergeometric distribution.',
|
|
9
|
+
ui: {
|
|
10
|
+
configureLabel: 'Set your deck rules',
|
|
11
|
+
configureHint: 'Change the deck, hand, draw, and mulligan assumptions. Results update instantly.',
|
|
12
|
+
presetLabel: 'Starting point',
|
|
13
|
+
presetCustom: 'Custom rules',
|
|
14
|
+
presetStandard: '60-card deck · 4 copies',
|
|
15
|
+
presetLimited: '40-card deck · 4 copies',
|
|
16
|
+
presetSingleton: '100-card deck · 1 copy',
|
|
17
|
+
deckSizeLabel: 'Deck size',
|
|
18
|
+
targetCopiesLabel: 'Copies of the card',
|
|
19
|
+
openingHandLabel: 'Opening hand',
|
|
20
|
+
drawsPerTurnLabel: 'Draws per turn',
|
|
21
|
+
throughTurnLabel: 'Show through turn',
|
|
22
|
+
mulliganLabel: 'Mulligan model',
|
|
23
|
+
mulliganNone: 'No mulligan',
|
|
24
|
+
mulliganFullRedraw: 'Redraw after a miss',
|
|
25
|
+
visualLabel: 'Your draw path',
|
|
26
|
+
visualHint: 'The fan opens as more cards enter the sample.',
|
|
27
|
+
openingHandStage: 'Opening hand',
|
|
28
|
+
turnLabel: 'Turn',
|
|
29
|
+
cardsSeenLabel: 'Cards seen',
|
|
30
|
+
finalChanceLabel: 'Chance by final turn',
|
|
31
|
+
expectedCopiesLabel: 'Expected copies seen by then',
|
|
32
|
+
probabilityByTurnLabel: 'Probability by turn',
|
|
33
|
+
explanationLabel: 'At least one copy',
|
|
34
|
+
noMulliganNote: 'No mulligan: the model counts one sample from the shuffled deck.',
|
|
35
|
+
fullRedrawNote: 'Redraw after a miss: if the opening hand has no copy, it is replaced and only the replacement path counts.',
|
|
36
|
+
invalidInput: 'Check the deck settings to continue.',
|
|
37
|
+
invalidDeck: 'Choose a valid deck size.',
|
|
38
|
+
invalidCopies: 'Choose a copy count between zero and the deck size.',
|
|
39
|
+
invalidHand: 'The opening hand cannot be larger than the deck.',
|
|
40
|
+
invalidDraws: 'Draws per turn must be zero or more.',
|
|
41
|
+
invalidTurns: 'Choose a turn between zero and 60.',
|
|
42
|
+
cardsLabel: 'cards',
|
|
43
|
+
copyLabel: 'copies',
|
|
44
|
+
},
|
|
45
|
+
seo: [
|
|
46
|
+
{ type: 'title', level: 2, text: 'Exact card draw odds for tabletop decks' },
|
|
47
|
+
{ type: 'paragraph', html: 'This card draw odds calculator answers a practical question for deck builders: how likely am I to see at least one copy of a card by a given turn? Enter your deck size, copies, opening hand, draw rate, and mulligan rule to get a turn-by-turn probability.' },
|
|
48
|
+
{ type: 'paragraph', html: 'The calculation uses the hypergeometric distribution because cards are drawn without replacement. That makes it useful for trading card games, board games, limited decks, and other finite card pools where the chance changes after every card.' },
|
|
49
|
+
{ type: 'title', level: 2, text: 'How to read the draw timeline' },
|
|
50
|
+
{ type: 'list', items: ['Opening hand shows the first sample from the shuffled deck.', 'Each turn adds the number of cards you draw per turn.', 'The percentage is the chance of seeing at least one copy by that point, not the chance of drawing exactly one.', 'Expected copies is a separate average and can be below one even when the hit chance is much higher.'] },
|
|
51
|
+
{ type: 'title', level: 2, text: 'Mulligan assumptions are configurable' },
|
|
52
|
+
{ type: 'paragraph', html: 'The redraw option models a simple strategy: keep an opening hand if it contains the target; otherwise replace the full hand once and continue from the replacement path. It does not model game-specific bottoming, partial keeps, scry effects, tutors, or decisions based on other cards.' },
|
|
53
|
+
{ type: 'tip', title: 'Use the same rules as your game', html: 'If your game has a different starting hand, extra draw step, or mulligan procedure, change those fields instead of treating the default as universal. The exact answer depends on the rules and the number of copies in the deck.' },
|
|
54
|
+
{ type: 'title', level: 2, text: 'The hypergeometric idea in one line' },
|
|
55
|
+
{ type: 'paragraph', html: 'For a sample of n cards from a deck of N containing K target copies, the no-hit chance is C(N − K, n) / C(N, n). The calculator reports its complement, 1 − no-hit chance, so the result is the probability of at least one target card.' },
|
|
56
|
+
{ type: 'diagnostic', variant: 'info', title: 'What this calculator does not simulate', badge: 'LIMITS', html: 'It does not track named cards, card selection, replacement effects, scrying, tutoring, multiple targets, or a full game state. For those cases, use this result as a baseline and model the extra rules separately.' },
|
|
57
|
+
],
|
|
58
|
+
faq: [
|
|
59
|
+
{ question: 'What is the formula for card draw odds?', answer: 'For at least one copy in n cards, the calculator uses 1 − C(N − K, n) / C(N, n), where N is deck size and K is the number of copies.' },
|
|
60
|
+
{ question: 'Does this calculator work for a 5 card draw?', answer: 'Yes. Set Opening hand to 5 and choose the number of draws and turns that match your game.' },
|
|
61
|
+
{ question: 'How does the mulligan option work?', answer: 'Redraw after a miss models one full replacement of an opening hand that contains no target copy. It is intentionally simpler than game-specific partial mulligan rules.' },
|
|
62
|
+
{ question: 'Why is expected copies different from hit chance?', answer: 'Hit chance asks whether the sample contains one or more copies. Expected copies is the average number of copies in the sample, so the two values measure different things.' },
|
|
63
|
+
],
|
|
64
|
+
bibliography,
|
|
65
|
+
howTo: [
|
|
66
|
+
{ name: 'Enter deck size and target copies', text: 'Set the total cards in the deck and how many copies of the card you want to draw.' },
|
|
67
|
+
{ name: 'Match the opening hand and draw rules', text: 'Enter the starting hand size, cards drawn per turn, and final turn to display.' },
|
|
68
|
+
{ name: 'Choose a mulligan model', text: 'Use No mulligan for one continuous sample or Redraw after a miss for one full replacement after a miss.' },
|
|
69
|
+
{ name: 'Read the timeline', text: 'Compare the at-least-one-copy percentage at the opening hand and each displayed turn.' },
|
|
70
|
+
],
|
|
71
|
+
schemas: [
|
|
72
|
+
{ '@context': 'https://schema.org', '@type': 'SoftwareApplication', name: 'Card Draw Odds Calculator', applicationCategory: 'GameApplication', operatingSystem: 'Web', description: 'Exact card draw probabilities for finite tabletop decks.' },
|
|
73
|
+
{ '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: [{ '@type': 'Question', name: 'What is the formula for card draw odds?', acceptedAnswer: { '@type': 'Answer', text: 'The calculator uses the complement of the hypergeometric no-hit probability.' } }] },
|
|
74
|
+
{ '@context': 'https://schema.org', '@type': 'HowTo', name: 'Calculate card draw odds', step: [{ '@type': 'HowToStep', name: 'Set deck rules', text: 'Enter deck size, copies, hand size, draws, and turns.' }, { '@type': 'HowToStep', name: 'Read the result', text: 'Use the timeline to compare the chance of seeing at least one copy by each turn.' }] },
|
|
75
|
+
],
|
|
76
|
+
};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
3
|
+
import type { CardDrawOddsUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
export const content: ToolLocaleContent<CardDrawOddsUI> = {
|
|
6
|
+
slug: 'calculadora-probabilidad-robar-cartas',
|
|
7
|
+
title: 'Calculadora de probabilidad de robar cartas',
|
|
8
|
+
description: 'Calcula con la distribución hipergeométrica la probabilidad de robar al menos una copia de una carta hasta un turno concreto.',
|
|
9
|
+
ui: {
|
|
10
|
+
configureLabel: 'Configura las reglas de tu mazo', configureHint: 'Cambia el mazo, la mano, los robos y el mulligan. Los resultados se actualizan al instante.',
|
|
11
|
+
presetLabel: 'Punto de partida', presetCustom: 'Reglas personalizadas', presetStandard: 'Mazo de 60 · 4 copias', presetLimited: 'Mazo de 40 · 4 copias', presetSingleton: 'Mazo de 100 · 1 copia',
|
|
12
|
+
deckSizeLabel: 'Tamaño del mazo', targetCopiesLabel: 'Copias de la carta', openingHandLabel: 'Mano inicial', drawsPerTurnLabel: 'Robos por turno', throughTurnLabel: 'Mostrar hasta el turno',
|
|
13
|
+
mulliganLabel: 'Modelo de mulligan', mulliganNone: 'Sin mulligan', mulliganFullRedraw: 'Reponer tras fallar', visualLabel: 'Tu ruta de robo', visualHint: 'El abanico se abre a medida que entran más cartas en la muestra.',
|
|
14
|
+
openingHandStage: 'Mano inicial', turnLabel: 'Turno', cardsSeenLabel: 'Cartas vistas', finalChanceLabel: 'Probabilidad hasta el turno final', expectedCopiesLabel: 'Copias esperadas hasta entonces', probabilityByTurnLabel: 'Probabilidad por turno', explanationLabel: 'Al menos una copia',
|
|
15
|
+
noMulliganNote: 'Sin mulligan: el modelo cuenta una única muestra del mazo barajado.', fullRedrawNote: 'Reponer tras fallar: si la mano inicial no contiene copias, se reemplaza una vez y se continúa con esa nueva mano.', invalidInput: 'Revisa las reglas del mazo para continuar.', invalidDeck: 'Elige un tamaño de mazo válido.', invalidCopies: 'Las copias deben estar entre cero y el tamaño del mazo.', invalidHand: 'La mano inicial no puede superar el tamaño del mazo.', invalidDraws: 'Los robos por turno deben ser cero o más.', invalidTurns: 'Elige un turno entre cero y 60.', cardsLabel: 'cartas', copyLabel: 'copias',
|
|
16
|
+
},
|
|
17
|
+
seo: [
|
|
18
|
+
{ type: 'title', level: 2, text: 'Calcula las probabilidades de robo de tu mazo' },
|
|
19
|
+
{ type: 'paragraph', html: 'Esta calculadora responde a una pregunta práctica al construir mazos: ¿qué probabilidad tengo de ver al menos una copia de una carta antes de un turno? Introduce el tamaño del mazo, copias, mano inicial, robos y mulligan para ver el porcentaje por turno.' },
|
|
20
|
+
{ type: 'paragraph', html: 'Usamos la distribución hipergeométrica porque las cartas se roban sin reemplazo. El modelo sirve para juegos de cartas coleccionables, juegos de mesa, mazos de limitado y cualquier conjunto finito de cartas.' },
|
|
21
|
+
{ type: 'title', level: 2, text: 'Cómo leer la línea temporal' },
|
|
22
|
+
{ type: 'list', items: ['La mano inicial representa la primera muestra del mazo barajado.', 'Cada turno añade el número de cartas que robas por turno.', 'El porcentaje indica la probabilidad de ver al menos una copia, no exactamente una.', 'Las copias esperadas son otro promedio y pueden ser menores que una aunque la probabilidad de acierto sea alta.'] },
|
|
23
|
+
{ type: 'title', level: 2, text: 'Las reglas del mulligan son configurables' },
|
|
24
|
+
{ type: 'paragraph', html: 'La opción de reposición representa una estrategia sencilla: conservas la mano si contiene el objetivo; si no, reemplazas toda la mano una vez y sigues desde esa nueva ruta. No incluye mulligans parciales, adivinar, tutores ni decisiones basadas en otras cartas.' },
|
|
25
|
+
{ type: 'tip', title: 'Usa las reglas reales de tu juego', html: 'Si tu juego tiene otra mano inicial, un robo adicional o un procedimiento de mulligan distinto, cambia esos campos. La respuesta depende de las reglas y del número de copias.' },
|
|
26
|
+
{ type: 'title', level: 2, text: 'La idea hipergeométrica en una línea' },
|
|
27
|
+
{ type: 'paragraph', html: 'Para n cartas de un mazo de N que contiene K copias objetivo, la probabilidad de no acertar es C(N − K, n) / C(N, n). La calculadora usa el complemento 1 − no acertar para obtener la probabilidad de al menos una carta objetivo.' },
|
|
28
|
+
{ type: 'diagnostic', variant: 'info', title: 'Qué no simula esta calculadora', badge: 'LÍMITES', html: 'No sigue cartas concretas, selección, efectos de reemplazo, adivinación, tutores, varios objetivos ni el estado completo de una partida. Usa el resultado como referencia y modela las reglas adicionales por separado.' },
|
|
29
|
+
],
|
|
30
|
+
faq: [
|
|
31
|
+
{ question: '¿Cuál es la fórmula de la probabilidad de robo?', answer: 'Para al menos una copia en n cartas se usa 1 − C(N − K, n) / C(N, n), donde N es el tamaño del mazo y K el número de copias.' },
|
|
32
|
+
{ question: '¿Funciona para una mano de 5 cartas?', answer: 'Sí. Pon Mano inicial en 5 y elige los robos y turnos que correspondan a tu juego.' },
|
|
33
|
+
{ question: '¿Cómo funciona la opción de mulligan?', answer: 'Reponer tras fallar simula un reemplazo completo de una mano inicial que no contiene la carta objetivo. Es más simple que las reglas parciales de cada juego.' },
|
|
34
|
+
{ question: '¿Por qué las copias esperadas no coinciden con la probabilidad de acierto?', answer: 'La probabilidad de acierto pregunta si hay una o más copias. Las copias esperadas son el promedio de copias presentes y miden otra cosa.' },
|
|
35
|
+
],
|
|
36
|
+
bibliography,
|
|
37
|
+
howTo: [
|
|
38
|
+
{ name: 'Introduce el tamaño y las copias', text: 'Indica cuántas cartas tiene el mazo y cuántas copias de la carta buscas.' },
|
|
39
|
+
{ name: 'Ajusta la mano y los robos', text: 'Escribe el tamaño de la mano inicial, los robos por turno y el turno final.' },
|
|
40
|
+
{ name: 'Elige un modelo de mulligan', text: 'Usa Sin mulligan para una muestra continua o Reponer tras fallar para un reemplazo completo.' },
|
|
41
|
+
{ name: 'Lee la línea temporal', text: 'Compara el porcentaje de al menos una copia en la mano y en cada turno.' },
|
|
42
|
+
],
|
|
43
|
+
schemas: [
|
|
44
|
+
{ '@context': 'https://schema.org', '@type': 'SoftwareApplication', name: 'Calculadora de probabilidad de robar cartas', applicationCategory: 'GameApplication', operatingSystem: 'Web', description: 'Probabilidades de robo exactas para mazos de cartas finitos.' },
|
|
45
|
+
{ '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: [{ '@type': 'Question', name: '¿Cuál es la fórmula de la probabilidad de robo?', acceptedAnswer: { '@type': 'Answer', text: 'La calculadora usa el complemento de la probabilidad hipergeométrica de no acertar.' } }] },
|
|
46
|
+
{ '@context': 'https://schema.org', '@type': 'HowTo', name: 'Calcular probabilidades de robo', step: [{ '@type': 'HowToStep', name: 'Configura el mazo', text: 'Introduce tamaño, copias, mano, robos y turnos.' }, { '@type': 'HowToStep', name: 'Lee el resultado', text: 'Compara la probabilidad de ver al menos una copia en cada turno.' }] },
|
|
47
|
+
],
|
|
48
|
+
};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
3
|
+
import type { CardDrawOddsUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
export const content: ToolLocaleContent<CardDrawOddsUI> = {
|
|
6
|
+
slug: 'calculateur-probabilite-piocher-cartes',
|
|
7
|
+
title: 'Calculateur de chances de pioche',
|
|
8
|
+
description: 'Calculez avec la loi hypergéométrique la probabilité de piocher au moins un exemplaire d\'une carte avant un tour donné.',
|
|
9
|
+
ui: {
|
|
10
|
+
configureLabel: 'Définissez les règles du paquet', configureHint: 'Modifiez le paquet, la main, les pioches et le mulligan. Les résultats changent instantanément.',
|
|
11
|
+
presetLabel: 'Point de départ', presetCustom: 'Règles personnalisées', presetStandard: 'Paquet de 60 · 4 exemplaires', presetLimited: 'Paquet de 40 · 4 exemplaires', presetSingleton: 'Paquet de 100 · 1 exemplaire',
|
|
12
|
+
deckSizeLabel: 'Taille du paquet', targetCopiesLabel: 'Exemplaires de la carte', openingHandLabel: 'Main de départ', drawsPerTurnLabel: 'Pioches par tour', throughTurnLabel: "Afficher jusqu'au tour",
|
|
13
|
+
mulliganLabel: 'Modèle de mulligan', mulliganNone: 'Sans mulligan', mulliganFullRedraw: 'Remplacer après un échec', visualLabel: 'Votre parcours de pioche', visualHint: 'L\'éventail s\'ouvre au fil des cartes ajoutées à l\'échantillon.',
|
|
14
|
+
openingHandStage: 'Main de départ', turnLabel: 'Tour', cardsSeenLabel: 'Cartes vues', finalChanceLabel: 'Chance au dernier tour', expectedCopiesLabel: 'Exemplaires attendus jusque-là', probabilityByTurnLabel: 'Probabilité par tour', explanationLabel: 'Au moins un exemplaire',
|
|
15
|
+
noMulliganNote: 'Sans mulligan, le modèle compte un seul échantillon du paquet mélangé.', fullRedrawNote: 'Remplacement après un échec, si la main de départ ne contient aucun exemplaire, elle est remplacée une fois.', invalidInput: 'Vérifiez les règles du paquet pour continuer.', invalidDeck: 'Choisissez une taille de paquet valide.', invalidCopies: 'Le nombre d\'exemplaires doit être compris entre zéro et la taille du paquet.', invalidHand: 'La main de départ ne peut pas dépasser le paquet.', invalidDraws: 'Les pioches par tour doivent être positives ou nulles.', invalidTurns: 'Choisissez un tour entre zéro et 60.', cardsLabel: 'cartes', copyLabel: 'exemplaires',
|
|
16
|
+
},
|
|
17
|
+
seo: [
|
|
18
|
+
{ type: 'title', level: 2, text: 'Calculez les chances de pioche de votre paquet' },
|
|
19
|
+
{ type: 'paragraph', html: 'Ce calculateur répond à une question concrète de construction de paquet, quelle est la probabilité de voir au moins un exemplaire d\'une carte avant un tour donné ? Saisissez la taille du paquet, les exemplaires, la main de départ, les pioches et la règle de mulligan.' },
|
|
20
|
+
{ type: 'paragraph', html: "La loi hypergéométrique convient aux cartes piochées sans remise. Elle s'applique aux jeux de cartes à collectionner, aux jeux de société, aux formats limité et aux autres ensembles finis." },
|
|
21
|
+
{ type: 'title', level: 2, text: 'Lire la chronologie de pioche' },
|
|
22
|
+
{ type: 'list', items: ['La main de départ est le premier échantillon du paquet mélangé.', 'Chaque tour ajoute le nombre de cartes indiqué.', 'Le pourcentage correspond à au moins un exemplaire, et non exactement un.', 'Les exemplaires attendus sont une moyenne distincte de la probabilité de toucher la carte.'] },
|
|
23
|
+
{ type: 'title', level: 2, text: 'Les hypothèses de mulligan sont réglables' },
|
|
24
|
+
{ type: 'paragraph', html: 'Le remplacement simule une règle simple, gardez une main qui contient la carte cible ; sinon, remplacez toute la main une fois et poursuivez avec cette nouvelle trajectoire. Les mulligans partiels, le regard, les tuteurs et les choix de jeu ne sont pas modélisés.' },
|
|
25
|
+
{ type: 'tip', title: 'Reproduisez les règles de votre jeu', html: "Si votre jeu utilise une autre main de départ, une pioche supplémentaire ou une autre procédure de mulligan, modifiez les champs. Le résultat dépend des règles et du nombre d'exemplaires." },
|
|
26
|
+
{ type: 'title', level: 2, text: 'L\'idée hypergéométrique en une ligne' },
|
|
27
|
+
{ type: 'paragraph', html: "Pour n cartes prises dans un paquet de N contenant K exemplaires cibles, la probabilité sans cible vaut C(N − K, n) / C(N, n). Le calculateur prend son complément 1 − cette valeur pour obtenir la probabilité d'au moins un exemplaire." },
|
|
28
|
+
{ type: 'diagnostic', variant: 'info', title: 'Ce que le calculateur ne simule pas', badge: 'LIMITES', html: "Il ne suit pas les cartes nommées, la sélection, les effets de remplacement, le regard, les tuteurs, plusieurs cibles ou l'état complet d'une partie. Utilisez le résultat comme base et ajoutez les règles particulières séparément." },
|
|
29
|
+
],
|
|
30
|
+
faq: [
|
|
31
|
+
{ question: 'Quelle formule donne les chances de pioche ?', answer: 'Pour au moins un exemplaire en n cartes, le calcul est 1 − C(N − K, n) / C(N, n), avec N pour la taille du paquet et K pour le nombre d\'exemplaires.' },
|
|
32
|
+
{ question: 'Le calculateur fonctionne-t-il pour une pioche de 5 cartes ?', answer: 'Oui. Réglez la main de départ sur 5 et choisissez les pioches et les tours de votre jeu.' },
|
|
33
|
+
{ question: 'Comment fonctionne le mulligan ?', answer: 'Remplacer après un échec simule un remplacement complet et unique d\'une main sans carte cible. C\'est volontairement plus simple que les règles propres à chaque jeu.' },
|
|
34
|
+
{ question: 'Pourquoi les exemplaires attendus diffèrent-ils de la probabilité de toucher ?', answer: 'La probabilité demande s\'il y a au moins un exemplaire. Les exemplaires attendus donnent le nombre moyen présent dans l\'échantillon.' },
|
|
35
|
+
],
|
|
36
|
+
bibliography,
|
|
37
|
+
howTo: [
|
|
38
|
+
{ name: 'Saisir la taille et les exemplaires', text: "Indiquez le nombre total de cartes et le nombre d'exemplaires recherchés." },
|
|
39
|
+
{ name: 'Adapter la main et les pioches', text: 'Saisissez la main de départ, les cartes piochées par tour et le dernier tour.' },
|
|
40
|
+
{ name: 'Choisir un modèle de mulligan', text: 'Utilisez Sans mulligan pour un échantillon continu ou le remplacement après échec pour un remplacement complet.' },
|
|
41
|
+
{ name: 'Lire la chronologie', text: 'Comparez le pourcentage d\'au moins un exemplaire à chaque tour affiché.' },
|
|
42
|
+
],
|
|
43
|
+
schemas: [
|
|
44
|
+
{ '@context': 'https://schema.org', '@type': 'SoftwareApplication', name: 'Calculateur de chances de pioche', applicationCategory: 'GameApplication', operatingSystem: 'Web', description: 'Probabilités de pioche pour des paquets de cartes finis.' },
|
|
45
|
+
{ '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: [{ '@type': 'Question', name: 'Quelle formule donne les chances de pioche ?', acceptedAnswer: { '@type': 'Answer', text: 'Le calculateur utilise le complément de la probabilité hypergéométrique sans cible.' } }] },
|
|
46
|
+
{ '@context': 'https://schema.org', '@type': 'HowTo', name: 'Calculer les chances de pioche', step: [{ '@type': 'HowToStep', name: 'Définir les règles', text: 'Saisissez la taille, les exemplaires, la main, les pioches et les tours.' }, { '@type': 'HowToStep', name: 'Lire le résultat', text: 'Comparez la probabilité de voir au moins un exemplaire dans la chronologie.' }] },
|
|
47
|
+
],
|
|
48
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
3
|
+
import type { CardDrawOddsUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
export const content: ToolLocaleContent<CardDrawOddsUI> = {
|
|
6
|
+
slug: 'kalkulator-peluang-menarik-kartu', title: 'Kalkulator Peluang Menarik Kartu',
|
|
7
|
+
description: 'Hitung peluang mendapatkan setidaknya satu salinan kartu hingga giliran tertentu dengan distribusi hipergeometrik.',
|
|
8
|
+
ui: {
|
|
9
|
+
configureLabel: 'Atur aturan dek', configureHint: 'Ubah dek, tangan, tarikan, dan mulligan. Hasil diperbarui seketika.', presetLabel: 'Titik awal', presetCustom: 'Aturan khusus', presetStandard: 'Dek 60 kartu · 4 salinan', presetLimited: 'Dek 40 kartu · 4 salinan', presetSingleton: 'Dek 100 kartu · 1 salinan', deckSizeLabel: 'Ukuran dek', targetCopiesLabel: 'Salinan kartu', openingHandLabel: 'Tangan awal', drawsPerTurnLabel: 'Tarikan per giliran', throughTurnLabel: 'Tampilkan hingga giliran', mulliganLabel: 'Model mulligan', mulliganNone: 'Tanpa mulligan', mulliganFullRedraw: 'Tarik ulang setelah gagal', visualLabel: 'Jalur tarikanmu', visualHint: 'Kipas kartu terbuka saat lebih banyak kartu masuk ke sampel.', openingHandStage: 'Tangan awal', turnLabel: 'Giliran', cardsSeenLabel: 'Kartu terlihat', finalChanceLabel: 'Peluang pada giliran akhir', expectedCopiesLabel: 'Salinan yang diharapkan', probabilityByTurnLabel: 'Peluang tiap giliran', explanationLabel: 'Setidaknya satu salinan', noMulliganNote: 'Tanpa mulligan: model menghitung satu sampel dari dek yang dikocok.', fullRedrawNote: 'Tarik ulang setelah gagal: jika tangan awal tidak memiliki salinan target, seluruh tangan diganti sekali.', invalidInput: 'Periksa aturan dek untuk melanjutkan.', invalidDeck: 'Pilih ukuran dek yang valid.', invalidCopies: 'Jumlah salinan harus antara nol dan ukuran dek.', invalidHand: 'Tangan awal tidak boleh lebih besar dari dek.', invalidDraws: 'Tarikan per giliran harus nol atau lebih.', invalidTurns: 'Pilih giliran antara nol dan 60.', cardsLabel: 'kartu', copyLabel: 'salinan',
|
|
10
|
+
},
|
|
11
|
+
seo: [
|
|
12
|
+
{ type: 'title', level: 2, text: 'Hitung peluang tarikan kartu untuk dek tabletop' },
|
|
13
|
+
{ type: 'paragraph', html: 'Kalkulator ini menjawab pertanyaan praktis saat menyusun dek: seberapa besar peluang melihat setidaknya satu salinan kartu sebelum giliran tertentu? Masukkan ukuran dek, salinan, tangan awal, tarikan, dan aturan mulligan untuk melihat persentase tiap giliran.' },
|
|
14
|
+
{ type: 'paragraph', html: 'Distribusi hipergeometrik digunakan karena kartu ditarik tanpa pengembalian. Model ini cocok untuk permainan kartu koleksi, permainan papan, dek limited, dan kumpulan kartu terbatas lainnya.' },
|
|
15
|
+
{ type: 'title', level: 2, text: 'Cara membaca garis waktu tarikan' },
|
|
16
|
+
{ type: 'list', items: ['Tangan awal adalah sampel pertama dari dek yang dikocok.', 'Setiap giliran menambahkan jumlah kartu yang ditarik.', 'Persentase berarti melihat setidaknya satu salinan, bukan tepat satu.', 'Salinan yang diharapkan adalah rata-rata terpisah dari peluang mengenai target.'] },
|
|
17
|
+
{ type: 'title', level: 2, text: 'Asumsi mulligan dapat diubah' },
|
|
18
|
+
{ type: 'paragraph', html: 'Pilihan tarik ulang memodelkan strategi sederhana: simpan tangan jika berisi target; jika tidak, ganti seluruh tangan sekali lalu lanjutkan dari jalur pengganti. Mulligan sebagian, scry, tutor, dan keputusan berdasarkan kartu lain tidak dimodelkan.' },
|
|
19
|
+
{ type: 'tip', title: 'Gunakan aturan permainanmu', html: 'Jika permainanmu memiliki tangan awal, tarikan tambahan, atau prosedur mulligan yang berbeda, ubah kolom tersebut. Jawaban bergantung pada aturan dan jumlah salinan di dek.' },
|
|
20
|
+
{ type: 'title', level: 2, text: 'Gagasan hipergeometrik dalam satu baris' },
|
|
21
|
+
{ type: 'paragraph', html: 'Untuk n kartu dari dek N yang berisi K salinan target, peluang tanpa target adalah C(N − K, n) / C(N, n). Kalkulator memakai komplemennya, 1 − peluang tanpa target, untuk mendapatkan peluang setidaknya satu kartu target.' },
|
|
22
|
+
{ type: 'diagnostic', variant: 'info', title: 'Yang tidak disimulasikan kalkulator ini', badge: 'BATASAN', html: 'Kartu bernama, pemilihan kartu, efek pengganti, scry, tutor, beberapa target, dan keadaan permainan penuh tidak dilacak. Gunakan hasil ini sebagai dasar lalu modelkan aturan tambahan secara terpisah.' },
|
|
23
|
+
],
|
|
24
|
+
faq: [{ question: 'Apa rumus peluang menarik kartu?', answer: 'Untuk setidaknya satu salinan dalam n kartu, kalkulator memakai 1 − C(N − K, n) / C(N, n), dengan N sebagai ukuran dek dan K sebagai jumlah salinan.' }, { question: 'Apakah ini bekerja untuk tarikan 5 kartu?', answer: 'Ya. Atur Tangan awal menjadi 5 dan pilih tarikan serta giliran sesuai permainanmu.' }, { question: 'Bagaimana opsi mulligan bekerja?', answer: 'Tarik ulang setelah gagal mengganti satu kali seluruh tangan awal yang tidak memiliki salinan target. Model ini sengaja lebih sederhana daripada aturan tiap permainan.' }, { question: 'Mengapa salinan yang diharapkan berbeda dari peluang berhasil?', answer: 'Peluang berhasil menanyakan apakah sampel berisi satu atau lebih salinan. Salinan yang diharapkan adalah jumlah rata-rata salinan dalam sampel.' }],
|
|
25
|
+
bibliography, howTo: [{ name: 'Masukkan ukuran dek dan salinan', text: 'Tentukan jumlah seluruh kartu dan jumlah salinan kartu yang ingin ditarik.' }, { name: 'Sesuaikan tangan dan tarikan', text: 'Masukkan ukuran tangan awal, kartu per giliran, dan giliran terakhir.' }, { name: 'Pilih model mulligan', text: 'Gunakan Tanpa mulligan untuk satu sampel berkelanjutan atau tarik ulang setelah gagal untuk satu penggantian penuh.' }, { name: 'Baca garis waktu', text: 'Bandingkan persentase setidaknya satu salinan pada tangan awal dan tiap giliran.' }],
|
|
26
|
+
schemas: [{ '@context': 'https://schema.org', '@type': 'SoftwareApplication', name: 'Kalkulator Peluang Menarik Kartu', applicationCategory: 'GameApplication', operatingSystem: 'Web', description: 'Peluang tarikan kartu untuk dek tabletop terbatas.' }, { '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: [{ '@type': 'Question', name: 'Apa rumus peluang menarik kartu?', acceptedAnswer: { '@type': 'Answer', text: 'Kalkulator memakai komplemen peluang hipergeometrik tanpa target.' } }] }, { '@context': 'https://schema.org', '@type': 'HowTo', name: 'Menghitung peluang tarikan kartu', step: [{ '@type': 'HowToStep', name: 'Atur aturan dek', text: 'Masukkan ukuran dek, salinan, tangan, tarikan, dan giliran.' }, { '@type': 'HowToStep', name: 'Baca hasil', text: 'Bandingkan peluang melihat setidaknya satu salinan pada garis waktu.' }] }],
|
|
27
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
3
|
+
import type { CardDrawOddsUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
export const content: ToolLocaleContent<CardDrawOddsUI> = {
|
|
6
|
+
slug: 'calcolatore-probabilita-pescare-carte', title: 'Calcolatore della probabilità di pescare carte',
|
|
7
|
+
description: 'Calcola con la distribuzione ipergeometrica la probabilità di pescare almeno una copia di una carta entro un turno preciso.',
|
|
8
|
+
ui: {
|
|
9
|
+
configureLabel: 'Imposta le regole del mazzo', configureHint: 'Modifica mazzo, mano, pescate e mulligan. I risultati cambiano subito.', presetLabel: 'Punto di partenza', presetCustom: 'Regole personalizzate', presetStandard: 'Mazzo da 60 · 4 copie', presetLimited: 'Mazzo da 40 · 4 copie', presetSingleton: 'Mazzo da 100 · 1 copia', deckSizeLabel: 'Dimensione del mazzo', targetCopiesLabel: 'Copie della carta', openingHandLabel: 'Mano iniziale', drawsPerTurnLabel: 'Pescate per turno', throughTurnLabel: 'Mostra fino al turno', mulliganLabel: 'Modello di mulligan', mulliganNone: 'Nessun mulligan', mulliganFullRedraw: 'Ripesca dopo un errore', visualLabel: 'Il tuo percorso di pesca', visualHint: 'Il ventaglio si apre quando altre carte entrano nel campione.', openingHandStage: 'Mano iniziale', turnLabel: 'Turno', cardsSeenLabel: 'Carte viste', finalChanceLabel: 'Probabilità al turno finale', expectedCopiesLabel: 'Copie attese fino a quel punto', probabilityByTurnLabel: 'Probabilità per turno', explanationLabel: 'Almeno una copia', noMulliganNote: 'Senza mulligan: il modello conta un solo campione dal mazzo mischiato.', fullRedrawNote: 'Ripesca dopo un errore: se la mano iniziale non contiene la copia cercata, viene sostituita una volta.', invalidInput: 'Controlla le regole del mazzo per continuare.', invalidDeck: 'Scegli una dimensione del mazzo valida.', invalidCopies: 'Le copie devono essere tra zero e la dimensione del mazzo.', invalidHand: 'La mano iniziale non può superare il mazzo.', invalidDraws: 'Le pescate per turno devono essere almeno zero.', invalidTurns: 'Scegli un turno tra zero e 60.', cardsLabel: 'carte', copyLabel: 'copie',
|
|
10
|
+
},
|
|
11
|
+
seo: [{ type: 'title', level: 2, text: 'Calcola le probabilità di pesca del tuo mazzo' }, { type: 'paragraph', html: 'Questo calcolatore risponde a una domanda utile per chi costruisce un mazzo: qual è la probabilità di vedere almeno una copia di una carta entro un certo turno? Inserisci dimensione, copie, mano iniziale, pescate e mulligan per ottenere il valore turno per turno.' }, { type: 'paragraph', html: 'La distribuzione ipergeometrica è adatta perché le carte vengono pescate senza reinserimento. È utile per giochi di carte collezionabili, giochi da tavolo, mazzi limited e altri insiemi finiti.' }, { type: 'title', level: 2, text: 'Come leggere la sequenza di pesca' }, { type: 'list', items: ['La mano iniziale è il primo campione del mazzo mischiato.', 'Ogni turno aggiunge il numero di carte pescate impostato.', 'La percentuale indica almeno una copia, non esattamente una.', 'Le copie attese sono una media diversa dalla probabilità di trovare il bersaglio.'] }, { type: 'title', level: 2, text: 'Le ipotesi del mulligan sono configurabili' }, { type: 'paragraph', html: 'La ripesca rappresenta una strategia semplice: tieni una mano che contiene il bersaglio; altrimenti sostituiscila interamente una volta e prosegui dal nuovo percorso. Non include mulligan parziali, scry, tutor o decisioni sulle altre carte.' }, { type: 'tip', title: 'Usa le regole del tuo gioco', html: 'Se il gioco ha una mano iniziale diversa, una pescata extra o un mulligan particolare, modifica questi campi. La risposta dipende dalle regole e dal numero di copie.' }, { type: 'title', level: 2, text: 'L\'idea ipergeometrica in una riga' }, { type: 'paragraph', html: 'Per n carte da un mazzo di N con K copie bersaglio, la probabilità di non trovare il bersaglio è C(N − K, n) / C(N, n). Il calcolatore usa il complemento 1 − questa probabilità per ottenere almeno una copia.' }, { type: 'diagnostic', variant: 'info', title: 'Cosa non simula questo calcolatore', badge: 'LIMITI', html: 'Non segue carte nominate, selezione, effetti di sostituzione, scry, tutor, più bersagli o lo stato completo della partita. Usa il risultato come base e aggiungi le regole speciali separatamente.' }],
|
|
12
|
+
faq: [{ question: 'Qual è la formula della probabilità di pesca?', answer: 'Per almeno una copia in n carte si usa 1 − C(N − K, n) / C(N, n), dove N è la dimensione del mazzo e K il numero di copie.' }, { question: 'Funziona per una mano di 5 carte?', answer: 'Sì. Imposta la mano iniziale su 5 e scegli pescate e turni coerenti con il gioco.' }, { question: 'Come funziona il mulligan?', answer: 'Ripesca dopo un errore sostituisce una volta una mano senza la carta bersaglio. È un modello più semplice delle regole specifiche dei giochi.' }, { question: 'Perché le copie attese sono diverse dalla probabilità di trovare la carta?', answer: 'La probabilità chiede se il campione contiene una o più copie. Le copie attese sono il numero medio di copie nel campione.' }],
|
|
13
|
+
bibliography, howTo: [{ name: 'Inserisci dimensione e copie', text: 'Imposta il numero totale di carte e le copie che vuoi pescare.' }, { name: 'Adatta mano e pescate', text: 'Inserisci mano iniziale, carte pescate per turno e turno finale.' }, { name: 'Scegli il modello di mulligan', text: 'Usa Nessun mulligan per un campione continuo oppure la ripesca per una sostituzione completa.' }, { name: 'Leggi la sequenza', text: 'Confronta la percentuale di almeno una copia nella mano e in ogni turno.' }],
|
|
14
|
+
schemas: [{ '@context': 'https://schema.org', '@type': 'SoftwareApplication', name: 'Calcolatore della probabilità di pescare carte', applicationCategory: 'GameApplication', operatingSystem: 'Web', description: 'Probabilità di pesca per mazzi tabletop finiti.' }, { '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: [{ '@type': 'Question', name: 'Qual è la formula della probabilità di pesca?', acceptedAnswer: { '@type': 'Answer', text: 'Il calcolatore usa il complemento della probabilità ipergeometrica senza bersaglio.' } }] }, { '@context': 'https://schema.org', '@type': 'HowTo', name: 'Calcolare le probabilità di pesca', step: [{ '@type': 'HowToStep', name: 'Imposta le regole', text: 'Inserisci dimensione, copie, mano, pescate e turni.' }, { '@type': 'HowToStep', name: 'Leggi il risultato', text: 'Confronta nella sequenza la probabilità di vedere almeno una copia.' }] }],
|
|
15
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
3
|
+
import type { CardDrawOddsUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
export const content: ToolLocaleContent<CardDrawOddsUI> = {
|
|
6
|
+
slug: 'card-draw-odds-calculator', title: 'カードを引く確率計算機',
|
|
7
|
+
description: '超幾何分布を使って、指定したターンまでにカードを1枚以上引く確率を計算します。',
|
|
8
|
+
ui: {
|
|
9
|
+
configureLabel: 'デッキのルールを設定', configureHint: 'デッキ、初期手札、ドロー、マリガンを変更すると結果がすぐ更新されます。', presetLabel: 'スタート地点', presetCustom: 'カスタムルール', presetStandard: '60枚デッキ · 4枚', presetLimited: '40枚デッキ · 4枚', presetSingleton: '100枚デッキ · 1枚', deckSizeLabel: 'デッキ枚数', targetCopiesLabel: '対象カードの枚数', openingHandLabel: '初期手札', drawsPerTurnLabel: '1ターンのドロー', throughTurnLabel: '表示するターン', mulliganLabel: 'マリガンモデル', mulliganNone: 'マリガンなし', mulliganFullRedraw: '外れたら引き直す', visualLabel: 'ドローの流れ', visualHint: 'サンプルにカードが増えるほどカードの扇が開きます。', openingHandStage: '初期手札', turnLabel: 'ターン', cardsSeenLabel: '見たカード', finalChanceLabel: '最終ターンまでの確率', expectedCopiesLabel: 'その時点の期待枚数', probabilityByTurnLabel: 'ターンごとの確率', explanationLabel: '1枚以上', noMulliganNote: 'マリガンなし: シャッフルしたデッキから1つのサンプルを数えます。', fullRedrawNote: '外れたら引き直す: 初期手札に対象がなければ1回だけ全交換します。', invalidInput: 'デッキの設定を確認してください。', invalidDeck: '有効なデッキ枚数を入力してください。', invalidCopies: '対象枚数は0枚以上、デッキ枚数以下にしてください。', invalidHand: '初期手札はデッキ枚数を超えられません。', invalidDraws: '1ターンのドローは0以上にしてください。', invalidTurns: '0から60までのターンを選んでください。', cardsLabel: '枚', copyLabel: '枚',
|
|
10
|
+
},
|
|
11
|
+
seo: [{ type: 'title', level: 2, text: 'デッキからカードを引く確率を計算' }, { type: 'paragraph', html: 'この計算機は、特定のターンまでに欲しいカードを1枚以上見られる確率を求めます。デッキ枚数、採用枚数、初期手札、毎ターンのドロー、マリガンを入力して、ターンごとの変化を確認できます。' }, { type: 'paragraph', html: 'カードは戻さずに引くため、超幾何分布を使います。トレーディングカードゲーム、ボードゲーム、リミテッドなど有限のカードプールに利用できます。' }, { type: 'title', level: 2, text: 'ドローのタイムラインを読む' }, { type: 'list', items: ['初期手札はシャッフル後の最初のサンプルです。', '各ターンに設定した枚数が追加されます。', '表示される割合は1枚以上であり、ちょうど1枚ではありません。', '期待枚数は別の平均値で、ヒット率とは異なります。'] }, { type: 'title', level: 2, text: 'マリガンの前提を変更' }, { type: 'paragraph', html: '引き直しは、対象を含む手札をキープし、対象がなければ手札全体を1回交換する簡単なモデルです。部分的なマリガン、占術、サーチ、他のカードを見た判断は含みません。' }, { type: 'tip', title: 'ゲームのルールに合わせる', html: '初期手札や追加ドロー、マリガン手順が異なる場合は入力を変更してください。結果はルールと対象カードの枚数に左右されます。' }, { type: 'title', level: 2, text: '超幾何分布を一行で説明' }, { type: 'paragraph', html: 'N枚のデッキに対象がK枚あり、n枚を見るとき、対象がない確率は C(N − K, n) / C(N, n) です。計算機はその補数 1 − その確率を使って1枚以上の確率を表示します。' }, { type: 'diagnostic', variant: 'info', title: '計算機で扱わないもの', badge: '制限', html: 'カード名、選択効果、交換効果、占術、サーチ、複数の対象、ゲーム全体の状態は追跡しません。結果を基準値として使い、追加ルールは別に考えてください。' }],
|
|
12
|
+
faq: [{ question: 'カードを引く確率の式は何ですか?', answer: 'n枚中に1枚以上ある確率として、1 − C(N − K, n) / C(N, n) を使います。Nはデッキ枚数、Kは対象カードの枚数です。' }, { question: '5枚ドローにも使えますか?', answer: 'はい。初期手札を5にして、ゲームに合わせてドロー数とターンを設定してください。' }, { question: 'マリガンはどう計算しますか?', answer: '外れたら引き直すでは、対象のない初期手札を1回だけ全交換します。ゲーム固有の部分交換より単純なモデルです。' }, { question: '期待枚数とヒット率が違うのはなぜですか?', answer: 'ヒット率は1枚以上あるかを問い、期待枚数はサンプル内の平均枚数を表すためです。' }],
|
|
13
|
+
bibliography, howTo: [{ name: 'デッキ枚数と対象枚数を入力', text: 'デッキ全体の枚数と探しているカードの枚数を設定します。' }, { name: '手札とドローを合わせる', text: '初期手札、1ターンのドロー、最後のターンを入力します。' }, { name: 'マリガンモデルを選ぶ', text: '連続したサンプルにはマリガンなし、全交換には外れたら引き直すを使います。' }, { name: 'タイムラインを読む', text: '初期手札と各ターンで1枚以上引く確率を比べます。' }],
|
|
14
|
+
schemas: [{ '@context': 'https://schema.org', '@type': 'SoftwareApplication', name: 'カードを引く確率計算機', applicationCategory: 'GameApplication', operatingSystem: 'Web', description: '有限のカードデッキ向けドロー確率計算機。' }, { '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: [{ '@type': 'Question', name: 'カードを引く確率の式は何ですか?', acceptedAnswer: { '@type': 'Answer', text: '対象がない超幾何確率の補数を使います。' } }] }, { '@context': 'https://schema.org', '@type': 'HowTo', name: 'カードを引く確率を計算する', step: [{ '@type': 'HowToStep', name: 'ルールを設定', text: 'デッキ、対象枚数、手札、ドロー、ターンを入力します。' }, { '@type': 'HowToStep', name: '結果を読む', text: 'タイムラインで1枚以上の確率を比べます。' }] }],
|
|
15
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
3
|
+
import type { CardDrawOddsUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
export const content: ToolLocaleContent<CardDrawOddsUI> = {
|
|
6
|
+
slug: 'card-draw-odds-calculator', title: '카드 드로우 확률 계산기',
|
|
7
|
+
description: '초기 손패와 턴별 드로우 규칙을 바탕으로 특정 턴까지 카드 한 장 이상을 뽑을 확률을 계산합니다.',
|
|
8
|
+
ui: {
|
|
9
|
+
configureLabel: '덱 규칙 설정', configureHint: '덱, 손패, 드로우, 멀리건을 바꾸면 결과가 즉시 갱신됩니다.', presetLabel: '시작점', presetCustom: '사용자 지정 규칙', presetStandard: '60장 덱 · 4장', presetLimited: '40장 덱 · 4장', presetSingleton: '100장 덱 · 1장', deckSizeLabel: '덱 크기', targetCopiesLabel: '대상 카드 수', openingHandLabel: '초기 손패', drawsPerTurnLabel: '턴당 드로우', throughTurnLabel: '표시할 턴', mulliganLabel: '멀리건 모델', mulliganNone: '멀리건 없음', mulliganFullRedraw: '실패 후 다시 뽑기', visualLabel: '드로우 경로', visualHint: '표본에 카드가 추가될수록 카드 부채가 펼쳐집니다.', openingHandStage: '초기 손패', turnLabel: '턴', cardsSeenLabel: '본 카드', finalChanceLabel: '마지막 턴까지의 확률', expectedCopiesLabel: '예상 카드 수', probabilityByTurnLabel: '턴별 확률', explanationLabel: '한 장 이상', noMulliganNote: '멀리건 없음: 섞인 덱에서 하나의 표본을 계산합니다.', fullRedrawNote: '실패 후 다시 뽑기: 초기 손패에 대상이 없으면 한 번 전체 교체합니다.', invalidInput: '계속하려면 덱 설정을 확인하세요.', invalidDeck: '올바른 덱 크기를 선택하세요.', invalidCopies: '카드 수는 0 이상이며 덱 크기 이하여야 합니다.', invalidHand: '초기 손패는 덱보다 클 수 없습니다.', invalidDraws: '턴당 드로우는 0 이상이어야 합니다.', invalidTurns: '0에서 60 사이의 턴을 선택하세요.', cardsLabel: '장', copyLabel: '장',
|
|
10
|
+
},
|
|
11
|
+
seo: [{ type: 'title', level: 2, text: '덱에서 카드를 뽑을 확률 계산하기' }, { type: 'paragraph', html: '이 계산기는 특정 턴까지 원하는 카드가 한 장 이상 손에 들어올 확률을 보여 줍니다. 덱 크기, 카드 수, 초기 손패, 턴당 드로우와 멀리건 규칙을 입력해 턴별 변화를 확인하세요.' }, { type: 'paragraph', html: '카드를 다시 넣지 않고 뽑기 때문에 초등적인 초정밀 분포인 초등하이퍼지오메트릭 분포를 사용합니다. 카드 게임, 보드게임, 리미티드 덱처럼 유한한 카드 묶음에 적합합니다.' }, { type: 'title', level: 2, text: '드로우 타임라인 읽기' }, { type: 'list', items: ['초기 손패는 섞인 덱에서 얻는 첫 표본입니다.', '각 턴에 설정한 카드 수가 더해집니다.', '백분율은 정확히 한 장이 아니라 한 장 이상을 뜻합니다.', '예상 카드 수는 적중 확률과 다른 평균값입니다.'] }, { type: 'title', level: 2, text: '멀리건 가정 설정하기' }, { type: 'paragraph', html: '다시 뽑기 옵션은 대상 카드가 있는 손패는 유지하고, 없으면 손패 전체를 한 번 교체하는 간단한 전략을 모델링합니다. 부분 멀리건, 점술, 서치와 다른 카드에 따른 판단은 포함하지 않습니다.' }, { type: 'tip', title: '게임 규칙에 맞추세요', html: '초기 손패, 추가 드로우 또는 멀리건 절차가 다르다면 입력값을 바꾸세요. 결과는 규칙과 카드 수에 따라 달라집니다.' }, { type: 'title', level: 2, text: '초기하이퍼지오메트릭 아이디어 한 줄' }, { type: 'paragraph', html: 'N장 덱에 대상 카드 K장이 있고 n장을 볼 때 대상이 없을 확률은 C(N − K, n) / C(N, n)입니다. 계산기는 그 여집합을 사용해 한 장 이상일 확률을 보여 줍니다.' }, { type: 'diagnostic', variant: 'info', title: '계산하지 않는 항목', badge: '제한', html: '카드 이름, 선택 효과, 교체 효과, 점술, 서치, 여러 대상과 전체 게임 상태는 추적하지 않습니다. 결과를 기준값으로 사용하고 추가 규칙은 따로 모델링하세요.' }],
|
|
12
|
+
faq: [{ question: '카드 드로우 확률 공식은 무엇인가요?', answer: 'n장 중 한 장 이상일 확률인 1 − C(N − K, n) / C(N, n)을 사용합니다. N은 덱 크기, K는 대상 카드 수입니다.' }, { question: '5장 드로우에도 사용할 수 있나요?', answer: '네. 초기 손패를 5로 설정하고 게임에 맞는 드로우와 턴을 선택하세요.' }, { question: '멀리건 옵션은 어떻게 계산하나요?', answer: '실패 후 다시 뽑기는 대상이 없는 초기 손패를 한 번 전체 교체하는 모델입니다.' }, { question: '예상 카드 수와 적중 확률이 다른 이유는 무엇인가요?', answer: '적중 확률은 한 장 이상 있는지를 묻고, 예상 카드 수는 표본 안의 평균 장수를 나타냅니다.' }],
|
|
13
|
+
bibliography, howTo: [{ name: '덱과 대상 카드 수 입력', text: '전체 덱 크기와 찾으려는 카드 수를 설정합니다.' }, { name: '손패와 드로우 규칙 맞추기', text: '초기 손패, 턴당 카드 수와 마지막 턴을 입력합니다.' }, { name: '멀리건 모델 선택', text: '연속 표본에는 멀리건 없음을, 전체 교체에는 실패 후 다시 뽑기를 사용합니다.' }, { name: '타임라인 읽기', text: '초기 손패와 각 턴의 한 장 이상 확률을 비교합니다.' }],
|
|
14
|
+
schemas: [{ '@context': 'https://schema.org', '@type': 'SoftwareApplication', name: '카드 드로우 확률 계산기', applicationCategory: 'GameApplication', operatingSystem: 'Web', description: '유한한 tabletop 덱을 위한 카드 드로우 확률 계산기.' }, { '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: [{ '@type': 'Question', name: '카드 드로우 확률 공식은 무엇인가요?', acceptedAnswer: { '@type': 'Answer', text: '대상이 없을 확률의 여집합인 초기하이퍼지오메트릭 확률을 사용합니다.' } }] }, { '@context': 'https://schema.org', '@type': 'HowTo', name: '카드 드로우 확률 계산하기', step: [{ '@type': 'HowToStep', name: '덱 규칙 설정', text: '덱, 카드 수, 손패, 드로우와 턴을 입력합니다.' }, { '@type': 'HowToStep', name: '결과 확인', text: '타임라인에서 한 장 이상일 확률을 비교합니다.' }] }],
|
|
15
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
3
|
+
import type { CardDrawOddsUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
export const content: ToolLocaleContent<CardDrawOddsUI> = {
|
|
6
|
+
slug: 'kans-kaart-trekken-calculator', title: 'Calculator voor de kans op kaarten trekken',
|
|
7
|
+
description: 'Bereken met de hypergeometrische verdeling de kans om vóór een bepaalde beurt minstens één exemplaar van een kaart te trekken.',
|
|
8
|
+
ui: {
|
|
9
|
+
configureLabel: 'Stel je deckregels in', configureHint: 'Pas deck, hand, trekken en mulligan aan. Resultaten worden direct bijgewerkt.', presetLabel: 'Startpunt', presetCustom: 'Aangepaste regels', presetStandard: 'Deck van 60 · 4 exemplaren', presetLimited: 'Deck van 40 · 4 exemplaren', presetSingleton: 'Deck van 100 · 1 exemplaar', deckSizeLabel: 'Deckgrootte', targetCopiesLabel: 'Exemplaren van de kaart', openingHandLabel: 'Openingshand', drawsPerTurnLabel: 'Kaarten per beurt', throughTurnLabel: 'Tonen tot beurt', mulliganLabel: 'Mulliganmodel', mulliganNone: 'Geen mulligan', mulliganFullRedraw: 'Opnieuw na misser', visualLabel: 'Jouw trekpad', visualHint: 'De waaier opent wanneer er meer kaarten in de steekproef komen.', openingHandStage: 'Openingshand', turnLabel: 'Beurt', cardsSeenLabel: 'Geziene kaarten', finalChanceLabel: 'Kans bij de laatste beurt', expectedCopiesLabel: 'Verwachte exemplaren tot dan', probabilityByTurnLabel: 'Kans per beurt', explanationLabel: 'Minstens één exemplaar', noMulliganNote: 'Geen mulligan: het model telt één steekproef uit het geschudde deck.', fullRedrawNote: 'Opnieuw na misser: een openingshand zonder doelkaart wordt één keer volledig vervangen.', invalidInput: 'Controleer de deckregels om door te gaan.', invalidDeck: 'Kies een geldige deckgrootte.', invalidCopies: 'Exemplaren moeten tussen nul en de deckgrootte liggen.', invalidHand: 'De openingshand mag niet groter zijn dan het deck.', invalidDraws: 'Kaarten per beurt moeten nul of meer zijn.', invalidTurns: 'Kies een beurt tussen nul en 60.', cardsLabel: 'kaarten', copyLabel: 'exemplaren',
|
|
10
|
+
},
|
|
11
|
+
seo: [{ type: 'title', level: 2, text: 'Bereken de kans om kaarten uit je deck te trekken' }, { type: 'paragraph', html: 'Deze calculator beantwoordt een praktische vraag voor deckbouwers: hoe groot is de kans dat je vóór een bepaalde beurt minstens één exemplaar van een kaart ziet? Vul deckgrootte, exemplaren, openingshand, trekken en mulligan in voor een overzicht per beurt.' }, { type: 'paragraph', html: 'De hypergeometrische verdeling past omdat kaarten zonder terugleggen worden getrokken. Daardoor werkt het model voor ruilkaartspellen, bordspellen, limited-decks en andere eindige kaartverzamelingen.' }, { type: 'title', level: 2, text: 'De trek-tijdlijn lezen' }, { type: 'list', items: ['De openingshand is de eerste steekproef uit het geschudde deck.', 'Elke beurt voegt het ingestelde aantal getrokken kaarten toe.', 'Het percentage betekent minstens één exemplaar, niet precies één.', 'Verwachte exemplaren zijn een apart gemiddelde en meten iets anders dan de trefkans.'] }, { type: 'title', level: 2, text: 'Mulliganaannames zijn instelbaar' }, { type: 'paragraph', html: 'Opnieuw trekken modelleert een eenvoudige strategie: houd een hand met de doelkaart; anders vervang je de hele hand één keer en ga je verder met het vervangende pad. Gedeeltelijke mulligans, scry, tutors en keuzes rond andere kaarten zitten er niet in.' }, { type: 'tip', title: 'Gebruik de regels van jouw spel', html: 'Heeft je spel een andere openingshand, extra trekstap of mulliganprocedure? Pas die velden aan. Het exacte antwoord hangt af van de regels en het aantal exemplaren.' }, { type: 'title', level: 2, text: 'Het hypergeometrische idee in één regel' }, { type: 'paragraph', html: 'Voor n kaarten uit een deck van N met K doel-exemplaren is de kans zonder doelkaart C(N − K, n) / C(N, n). De calculator gebruikt het complement 1 − die kans voor minstens één doelkaart.' }, { type: 'diagnostic', variant: 'info', title: 'Wat deze calculator niet simuleert', badge: 'GRENZEN', html: 'Benoemde kaarten, selectie, vervangingseffecten, scry, tutors, meerdere doelen en een volledige spelstaat worden niet bijgehouden. Gebruik dit als basis en modelleer extra regels apart.' }],
|
|
12
|
+
faq: [{ question: 'Welke formule gebruikt de kaarttrekkans?', answer: 'Voor minstens één exemplaar in n kaarten gebruikt de calculator 1 − C(N − K, n) / C(N, n), met N als deckgrootte en K als aantal exemplaren.' }, { question: 'Werkt dit voor vijf getrokken kaarten?', answer: 'Ja. Zet Openingshand op 5 en kies trekken en beurten die bij je spel passen.' }, { question: 'Hoe werkt de mulliganoptie?', answer: 'Opnieuw na misser vervangt één keer een openingshand zonder doelkaart. Het is eenvoudiger dan de specifieke gedeeltelijke regels van een spel.' }, { question: 'Waarom verschilt het verwachte aantal exemplaren van de trefkans?', answer: 'De trefkans vraagt of de steekproef één of meer exemplaren bevat. Verwachte exemplaren is het gemiddelde aantal in die steekproef.' }],
|
|
13
|
+
bibliography, howTo: [{ name: 'Vul deckgrootte en exemplaren in', text: 'Stel het totale aantal kaarten en het aantal gewenste exemplaren in.' }, { name: 'Pas hand en trekken aan', text: 'Vul openingshand, kaarten per beurt en de laatste beurt in.' }, { name: 'Kies een mulliganmodel', text: 'Gebruik Geen mulligan voor één doorlopende steekproef of Opnieuw na misser voor één volledige vervanging.' }, { name: 'Lees de tijdlijn', text: 'Vergelijk het percentage van minstens één exemplaar in de hand en per beurt.' }],
|
|
14
|
+
schemas: [{ '@context': 'https://schema.org', '@type': 'SoftwareApplication', name: 'Calculator voor de kans op kaarten trekken', applicationCategory: 'GameApplication', operatingSystem: 'Web', description: 'Kaarttrekkansen voor eindige tabletop-decks.' }, { '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: [{ '@type': 'Question', name: 'Welke formule gebruikt de kaarttrekkans?', acceptedAnswer: { '@type': 'Answer', text: 'De calculator gebruikt het complement van de hypergeometrische kans zonder doelkaart.' } }] }, { '@context': 'https://schema.org', '@type': 'HowTo', name: 'Kaarttrekkansen berekenen', step: [{ '@type': 'HowToStep', name: 'Stel deckregels in', text: 'Vul deckgrootte, exemplaren, hand, trekken en beurten in.' }, { '@type': 'HowToStep', name: 'Lees het resultaat', text: 'Vergelijk de kans op minstens één exemplaar in de tijdlijn.' }] }],
|
|
15
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
3
|
+
import type { CardDrawOddsUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
export const content: ToolLocaleContent<CardDrawOddsUI> = {
|
|
6
|
+
slug: 'kalkulator-prawdopodobienstwa-doboru-karty', title: 'Kalkulator prawdopodobieństwa dobrania karty',
|
|
7
|
+
description: 'Oblicz rozkładem hipergeometrycznym szansę dobrania co najmniej jednej kopii karty do wybranej tury.',
|
|
8
|
+
ui: {
|
|
9
|
+
configureLabel: 'Ustaw zasady talii', configureHint: 'Zmień talię, rękę, dobieranie i mulligan. Wynik aktualizuje się od razu.', presetLabel: 'Punkt wyjścia', presetCustom: 'Własne zasady', presetStandard: 'Talia 60 kart · 4 kopie', presetLimited: 'Talia 40 kart · 4 kopie', presetSingleton: 'Talia 100 kart · 1 kopia', deckSizeLabel: 'Rozmiar talii', targetCopiesLabel: 'Kopie karty', openingHandLabel: 'Ręka początkowa', drawsPerTurnLabel: 'Dobierane karty na turę', throughTurnLabel: 'Pokaż do tury', mulliganLabel: 'Model mulliganu', mulliganNone: 'Bez mulliganu', mulliganFullRedraw: 'Wymień po pudle', visualLabel: 'Twoja ścieżka dobierania', visualHint: 'Wachlarz otwiera się, gdy próbka obejmuje kolejne karty.', openingHandStage: 'Ręka początkowa', turnLabel: 'Tura', cardsSeenLabel: 'Widziane karty', finalChanceLabel: 'Szansa w ostatniej turze', expectedCopiesLabel: 'Oczekiwane kopie do tego momentu', probabilityByTurnLabel: 'Prawdopodobieństwo według tury', explanationLabel: 'Co najmniej jedna kopia', noMulliganNote: 'Bez mulliganu: model liczy jedną próbkę z potasowanej talii.', fullRedrawNote: 'Wymiana po pudle: ręka bez celu jest raz wymieniana w całości.', invalidInput: 'Sprawdź zasady talii, aby kontynuować.', invalidDeck: 'Wybierz prawidłowy rozmiar talii.', invalidCopies: 'Liczba kopii musi mieścić się między zerem a rozmiarem talii.', invalidHand: 'Ręka początkowa nie może być większa od talii.', invalidDraws: 'Dobieranie na turę musi wynosić co najmniej zero.', invalidTurns: 'Wybierz turę od zera do 60.', cardsLabel: 'kart', copyLabel: 'kopii',
|
|
10
|
+
},
|
|
11
|
+
seo: [{ type: 'title', level: 2, text: 'Oblicz szanse dobrania karty z talii' }, { type: 'paragraph', html: 'Kalkulator odpowiada na praktyczne pytanie przy budowaniu talii: jaka jest szansa zobaczenia co najmniej jednej kopii karty do wybranej tury? Podaj rozmiar talii, kopie, rękę, dobieranie i mulligan, aby zobaczyć wynik dla każdej tury.' }, { type: 'paragraph', html: 'Rozkład hipergeometryczny pasuje, ponieważ karty są dobierane bez zwracania. Model sprawdza się w grach karcianych, planszowych, taliach limited i innych skończonych zbiorach kart.' }, { type: 'title', level: 2, text: 'Jak czytać oś dobierania' }, { type: 'list', items: ['Ręka początkowa to pierwsza próbka z potasowanej talii.', 'Każda tura dodaje ustawioną liczbę kart.', 'Procent oznacza co najmniej jedną kopię, a nie dokładnie jedną.', 'Oczekiwane kopie to osobnia średnia, inna niż szansa trafienia.'] }, { type: 'title', level: 2, text: 'Założenia mulliganu można zmienić' }, { type: 'paragraph', html: 'Wymiana po pudle przedstawia prostą strategię: zachowaj rękę z celem, a bez celu wymień całą rękę raz i kontynuuj nową ścieżką. Częściowe mulligany, scry, tutory i decyzje dotyczące innych kart nie są modelowane.' }, { type: 'tip', title: 'Użyj zasad swojej gry', html: 'Jeśli gra ma inną rękę początkową, dodatkowe dobieranie lub procedurę mulliganu, zmień odpowiednie pola. Wynik zależy od zasad i liczby kopii.' }, { type: 'title', level: 2, text: 'Idea hipergeometryczna w jednym wierszu' }, { type: 'paragraph', html: 'Dla n kart z talii N zawierającej K kopii celu szansa braku celu to C(N − K, n) / C(N, n). Kalkulator używa dopełnienia 1 − tej wartości, aby podać szansę na co najmniej jedną kopię.' }, { type: 'diagnostic', variant: 'info', title: 'Czego kalkulator nie symuluje', badge: 'OGRANICZENIA', html: 'Nie śledzi nazwanych kart, wyboru, efektów zastępowania, scry, tutorów, wielu celów ani całego stanu gry. Potraktuj wynik jako bazę i osobno zamodeluj dodatkowe zasady.' }],
|
|
12
|
+
faq: [{ question: 'Jaki wzór opisuje szansę dobrania karty?', answer: 'Dla co najmniej jednej kopii w n kartach kalkulator używa 1 − C(N − K, n) / C(N, n), gdzie N to rozmiar talii, a K to liczba kopii.' }, { question: 'Czy działa dla dobrania 5 kart?', answer: 'Tak. Ustaw rękę początkową na 5 i wybierz dobieranie oraz tury zgodne z grą.' }, { question: 'Jak działa opcja mulliganu?', answer: 'Wymiana po pudle oznacza jedną pełną wymianę ręki początkowej bez karty celu. To prostszy model niż zasady konkretnej gry.' }, { question: 'Dlaczego oczekiwane kopie różnią się od szansy trafienia?', answer: 'Szansa trafienia pyta, czy próbka zawiera jedną lub więcej kopii. Oczekiwane kopie to ich średnia liczba.' }],
|
|
13
|
+
bibliography, howTo: [{ name: 'Wpisz rozmiar talii i kopie', text: 'Ustaw całkowitą liczbę kart oraz liczbę szukanych kopii.' }, { name: 'Dopasuj rękę i dobieranie', text: 'Podaj rozmiar ręki, karty na turę i ostatnią turę.' }, { name: 'Wybierz model mulliganu', text: 'Użyj Bez mulliganu dla jednej próbki lub wymiany po pudle dla jednej pełnej wymiany.' }, { name: 'Przeczytaj oś czasu', text: 'Porównaj procent co najmniej jednej kopii w ręce i w każdej turze.' }],
|
|
14
|
+
schemas: [{ '@context': 'https://schema.org', '@type': 'SoftwareApplication', name: 'Kalkulator prawdopodobieństwa dobrania karty', applicationCategory: 'GameApplication', operatingSystem: 'Web', description: 'Szanse dobrania kart dla skończonych talii tabletop.' }, { '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: [{ '@type': 'Question', name: 'Jaki wzór opisuje szansę dobrania karty?', acceptedAnswer: { '@type': 'Answer', text: 'Kalkulator używa dopełnienia hipergeometrycznej szansy braku celu.' } }] }, { '@context': 'https://schema.org', '@type': 'HowTo', name: 'Obliczanie szans dobrania karty', step: [{ '@type': 'HowToStep', name: 'Ustaw zasady talii', text: 'Wpisz rozmiar, kopie, rękę, dobieranie i tury.' }, { '@type': 'HowToStep', name: 'Odczytaj wynik', text: 'Porównaj szansę zobaczenia co najmniej jednej kopii na osi czasu.' }] }],
|
|
15
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
3
|
+
import type { CardDrawOddsUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
export const content: ToolLocaleContent<CardDrawOddsUI> = {
|
|
6
|
+
slug: 'calculadora-probabilidade-comprar-cartas', title: 'Calculadora de probabilidade de comprar cartas',
|
|
7
|
+
description: 'Calcule, com a distribuição hipergeométrica, a probabilidade de comprar pelo menos uma cópia de uma carta até um turno específico.',
|
|
8
|
+
ui: {
|
|
9
|
+
configureLabel: 'Defina as regras do baralho', configureHint: 'Altere baralho, mão, compras e mulligan. Os resultados são atualizados na hora.', presetLabel: 'Ponto de partida', presetCustom: 'Regras personalizadas', presetStandard: 'Baralho de 60 · 4 cópias', presetLimited: 'Baralho de 40 · 4 cópias', presetSingleton: 'Baralho de 100 · 1 cópia', deckSizeLabel: 'Tamanho do baralho', targetCopiesLabel: 'Cópias da carta', openingHandLabel: 'Mão inicial', drawsPerTurnLabel: 'Compras por turno', throughTurnLabel: 'Mostrar até o turno', mulliganLabel: 'Modelo de mulligan', mulliganNone: 'Sem mulligan', mulliganFullRedraw: 'Comprar de novo após errar', visualLabel: 'Seu caminho de compra', visualHint: 'O leque se abre conforme mais cartas entram na amostra.', openingHandStage: 'Mão inicial', turnLabel: 'Turno', cardsSeenLabel: 'Cartas vistas', finalChanceLabel: 'Chance no turno final', expectedCopiesLabel: 'Cópias esperadas até lá', probabilityByTurnLabel: 'Probabilidade por turno', explanationLabel: 'Pelo menos uma cópia', noMulliganNote: 'Sem mulligan: o modelo conta uma amostra do baralho embaralhado.', fullRedrawNote: 'Comprar de novo após errar: uma mão inicial sem a carta-alvo é substituída uma vez.', invalidInput: 'Confira as regras do baralho para continuar.', invalidDeck: 'Escolha um tamanho de baralho válido.', invalidCopies: 'As cópias devem ficar entre zero e o tamanho do baralho.', invalidHand: 'A mão inicial não pode ser maior que o baralho.', invalidDraws: 'As compras por turno devem ser zero ou mais.', invalidTurns: 'Escolha um turno entre zero e 60.', cardsLabel: 'cartas', copyLabel: 'cópias',
|
|
10
|
+
},
|
|
11
|
+
seo: [{ type: 'title', level: 2, text: 'Calcule as chances de compra do seu baralho' }, { type: 'paragraph', html: 'Esta calculadora responde a uma pergunta útil para montar baralhos: qual é a probabilidade de ver pelo menos uma cópia de uma carta até determinado turno? Informe tamanho, cópias, mão inicial, compras e mulligan para obter uma linha por turno.' }, { type: 'paragraph', html: 'A distribuição hipergeométrica é adequada porque as cartas são compradas sem reposição. O modelo serve para jogos de cartas colecionáveis, jogos de mesa, baralhos limitados e outros conjuntos finitos.' }, { type: 'title', level: 2, text: 'Como ler a linha do tempo de compras' }, { type: 'list', items: ['A mão inicial é a primeira amostra do baralho embaralhado.', 'Cada turno acrescenta o número configurado de cartas compradas.', 'A porcentagem significa pelo menos uma cópia, não exatamente uma.', 'Cópias esperadas é uma média separada da chance de encontrar a carta.'] }, { type: 'title', level: 2, text: 'As regras do mulligan são ajustáveis' }, { type: 'paragraph', html: 'A opção de comprar novamente representa uma estratégia simples: mantenha a mão se ela tiver o alvo; caso contrário, substitua a mão inteira uma vez e continue pelo caminho da reposição. Não inclui mulligan parcial, vidência, tutores ou decisões sobre outras cartas.' }, { type: 'tip', title: 'Use as regras do seu jogo', html: 'Se o jogo tiver outra mão inicial, uma compra extra ou um mulligan diferente, altere os campos. A resposta depende das regras e do número de cópias.' }, { type: 'title', level: 2, text: 'A ideia hipergeométrica em uma linha' }, { type: 'paragraph', html: 'Para n cartas de um baralho N com K cópias-alvo, a chance de não encontrar o alvo é C(N − K, n) / C(N, n). A calculadora usa o complemento 1 − essa chance para obter pelo menos uma cópia.' }, { type: 'diagnostic', variant: 'info', title: 'O que esta calculadora não simula', badge: 'LIMITES', html: 'Ela não acompanha cartas nomeadas, seleção, efeitos de substituição, vidência, tutores, vários alvos ou o estado completo da partida. Use o resultado como base e modele regras extras à parte.' }],
|
|
12
|
+
faq: [{ question: 'Qual é a fórmula da chance de comprar cartas?', answer: 'Para pelo menos uma cópia em n cartas, usa-se 1 − C(N − K, n) / C(N, n), em que N é o tamanho do baralho e K é o número de cópias.' }, { question: 'Funciona para uma compra de 5 cartas?', answer: 'Sim. Defina Mão inicial como 5 e escolha compras e turnos que correspondam ao seu jogo.' }, { question: 'Como funciona a opção de mulligan?', answer: 'Comprar de novo após errar simula uma substituição completa e única da mão inicial sem a carta-alvo. É mais simples que as regras de cada jogo.' }, { question: 'Por que cópias esperadas diferem da chance de acerto?', answer: 'A chance pergunta se a amostra tem uma ou mais cópias. Cópias esperadas é o número médio de cópias presentes na amostra.' }],
|
|
13
|
+
bibliography, howTo: [{ name: 'Informe tamanho e cópias', text: 'Defina o número total de cartas e quantas cópias da carta você procura.' }, { name: 'Ajuste mão e compras', text: 'Informe a mão inicial, cartas compradas por turno e o turno final.' }, { name: 'Escolha um modelo de mulligan', text: 'Use Sem mulligan para uma amostra contínua ou comprar novamente para uma substituição completa.' }, { name: 'Leia a linha do tempo', text: 'Compare a porcentagem de pelo menos uma cópia na mão e em cada turno.' }],
|
|
14
|
+
schemas: [{ '@context': 'https://schema.org', '@type': 'SoftwareApplication', name: 'Calculadora de probabilidade de comprar cartas', applicationCategory: 'GameApplication', operatingSystem: 'Web', description: 'Probabilidades de compra para baralhos tabletop finitos.' }, { '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: [{ '@type': 'Question', name: 'Qual é a fórmula da chance de comprar cartas?', acceptedAnswer: { '@type': 'Answer', text: 'A calculadora usa o complemento da probabilidade hipergeométrica sem acerto.' } }] }, { '@context': 'https://schema.org', '@type': 'HowTo', name: 'Calcular chances de compra', step: [{ '@type': 'HowToStep', name: 'Defina o baralho', text: 'Informe tamanho, cópias, mão, compras e turnos.' }, { '@type': 'HowToStep', name: 'Leia o resultado', text: 'Compare na linha do tempo a chance de ver pelo menos uma cópia.' }] }],
|
|
15
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
3
|
+
import type { CardDrawOddsUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
export const content: ToolLocaleContent<CardDrawOddsUI> = {
|
|
6
|
+
slug: 'kalkulyator-veroyatnosti-vytyagivaniya-kart', title: 'Калькулятор вероятности добора карт',
|
|
7
|
+
description: 'Рассчитайте по гипергеометрическому распределению вероятность добрать хотя бы одну копию карты к нужному ходу.',
|
|
8
|
+
ui: {
|
|
9
|
+
configureLabel: 'Настройте правила колоды', configureHint: 'Измените колоду, руку, добор и муллиган. Результат обновляется сразу.', presetLabel: 'Начальная настройка', presetCustom: 'Свои правила', presetStandard: '60 карт · 4 копии', presetLimited: '40 карт · 4 копии', presetSingleton: '100 карт · 1 копия', deckSizeLabel: 'Размер колоды', targetCopiesLabel: 'Копии карты', openingHandLabel: 'Стартовая рука', drawsPerTurnLabel: 'Добор за ход', throughTurnLabel: 'Показать до хода', mulliganLabel: 'Модель муллигана', mulliganNone: 'Без муллигана', mulliganFullRedraw: 'Пересдать после промаха', visualLabel: 'Ваш путь добора', visualHint: 'Веер раскрывается по мере добавления карт в выборку.', openingHandStage: 'Стартовая рука', turnLabel: 'Ход', cardsSeenLabel: 'Увидено карт', finalChanceLabel: 'Шанс к последнему ходу', expectedCopiesLabel: 'Ожидаемые копии к этому моменту', probabilityByTurnLabel: 'Вероятность по ходам', explanationLabel: 'Хотя бы одна копия', noMulliganNote: 'Без муллигана: модель считает одну выборку из перемешанной колоды.', fullRedrawNote: 'Пересдача после промаха: стартовая рука без цели один раз заменяется полностью.', invalidInput: 'Проверьте правила колоды, чтобы продолжить.', invalidDeck: 'Выберите допустимый размер колоды.', invalidCopies: 'Число копий должно быть от нуля до размера колоды.', invalidHand: 'Стартовая рука не может быть больше колоды.', invalidDraws: 'Добор за ход должен быть не меньше нуля.', invalidTurns: 'Выберите ход от нуля до 60.', cardsLabel: 'карт', copyLabel: 'копий',
|
|
10
|
+
},
|
|
11
|
+
seo: [{ type: 'title', level: 2, text: 'Рассчитайте шанс добора карты из колоды' }, { type: 'paragraph', html: 'Калькулятор отвечает на практический вопрос при сборке колоды: какова вероятность увидеть хотя бы одну копию карты к определённому ходу? Укажите размер колоды, копии, стартовую руку, добор и правило муллигана.' }, { type: 'paragraph', html: 'Гипергеометрическое распределение подходит, потому что карты берутся без возвращения. Модель полезна для коллекционных карточных и настольных игр, формата лимитед и других конечных наборов карт.' }, { type: 'title', level: 2, text: 'Как читать шкалу добора' }, { type: 'list', items: ['Стартовая рука является первой выборкой из перемешанной колоды.', 'Каждый ход добавляет заданное число карт.', 'Процент означает хотя бы одну копию, а не ровно одну.', 'Ожидаемое число копий является отдельным средним показателем.'] }, { type: 'title', level: 2, text: 'Допущения муллигана можно менять' }, { type: 'paragraph', html: 'Пересдача моделирует простую стратегию: руку с целью оставляют, а руку без цели один раз заменяют полностью. Частичные муллиганы, прорицание, туторы и решения по другим картам не учитываются.' }, { type: 'tip', title: 'Используйте правила своей игры', html: 'Если в игре другая стартовая рука, дополнительный добор или особый муллиган, измените поля. Ответ зависит от правил и числа копий в колоде.' }, { type: 'title', level: 2, text: 'Гипергеометрическая идея в одной строке' }, { type: 'paragraph', html: 'Для n карт из колоды N с K целевыми копиями вероятность не найти цель равна C(N − K, n) / C(N, n). Калькулятор берёт дополнение 1 − этой вероятности и получает шанс найти хотя бы одну копию.' }, { type: 'diagnostic', variant: 'info', title: 'Что калькулятор не моделирует', badge: 'ОГРАНИЧЕНИЯ', html: 'Он не отслеживает названные карты, выбор, эффекты замены, прорицание, туторов, несколько целей и полное состояние партии. Используйте результат как базовую оценку, а особые правила моделируйте отдельно.' }],
|
|
12
|
+
faq: [{ question: 'Какая формула используется для шанса добора?', answer: 'Для хотя бы одной копии в n картах используется 1 − C(N − K, n) / C(N, n), где N: размер колоды, а K: число копий.' }, { question: 'Работает ли калькулятор для добора 5 карт?', answer: 'Да. Установите размер стартовой руки 5 и выберите добор и ходы по правилам игры.' }, { question: 'Как работает муллиган?', answer: 'Пересдать после промаха означает одну полную замену стартовой руки без целевой карты. Это упрощённая модель, а не правило конкретной игры.' }, { question: 'Почему ожидаемые копии отличаются от шанса попадания?', answer: 'Шанс попадания спрашивает, есть ли в выборке одна или больше копий. Ожидаемые копии: это их среднее количество.' }],
|
|
13
|
+
bibliography, howTo: [{ name: 'Введите размер колоды и копии', text: 'Укажите общее число карт и количество искомых копий.' }, { name: 'Настройте руку и добор', text: 'Введите размер стартовой руки, карт за ход и последний ход.' }, { name: 'Выберите модель муллигана', text: 'Используйте Без муллигана для одной выборки или пересдачу для одной полной замены.' }, { name: 'Прочитайте шкалу', text: 'Сравните процент хотя бы одной копии в стартовой руке и по ходам.' }],
|
|
14
|
+
schemas: [{ '@context': 'https://schema.org', '@type': 'SoftwareApplication', name: 'Калькулятор вероятности добора карт', applicationCategory: 'GameApplication', operatingSystem: 'Web', description: 'Вероятности добора для конечных настольных колод.' }, { '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: [{ '@type': 'Question', name: 'Какая формула используется для шанса добора?', acceptedAnswer: { '@type': 'Answer', text: 'Калькулятор использует дополнение гипергеометрической вероятности не найти цель.' } }] }, { '@context': 'https://schema.org', '@type': 'HowTo', name: 'Расчёт вероятности добора', step: [{ '@type': 'HowToStep', name: 'Задайте правила колоды', text: 'Введите размер, копии, руку, добор и ходы.' }, { '@type': 'HowToStep', name: 'Прочитайте результат', text: 'Сравните шанс увидеть хотя бы одну копию на шкале.' }] }],
|
|
15
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
3
|
+
import type { CardDrawOddsUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
export const content: ToolLocaleContent<CardDrawOddsUI> = {
|
|
6
|
+
slug: 'kalkylator-kortdragnings-sannolikhet', title: 'Kalkylator för sannolikhet att dra kort',
|
|
7
|
+
description: 'Beräkna med den hypergeometriska fördelningen chansen att dra minst ett exemplar av ett kort före en viss tur.',
|
|
8
|
+
ui: {
|
|
9
|
+
configureLabel: 'Ställ in kortlekens regler', configureHint: 'Ändra lek, hand, dragningar och mulligan. Resultatet uppdateras direkt.', presetLabel: 'Startpunkt', presetCustom: 'Egna regler', presetStandard: '60 kort · 4 exemplar', presetLimited: '40 kort · 4 exemplar', presetSingleton: '100 kort · 1 exemplar', deckSizeLabel: 'Kortlekens storlek', targetCopiesLabel: 'Exemplar av kortet', openingHandLabel: 'Starthand', drawsPerTurnLabel: 'Dragna kort per tur', throughTurnLabel: 'Visa till tur', mulliganLabel: 'Mulliganmodell', mulliganNone: 'Ingen mulligan', mulliganFullRedraw: 'Dra om efter miss', visualLabel: 'Din dragväg', visualHint: 'Kortsolfjädern öppnas när fler kort kommer med i urvalet.', openingHandStage: 'Starthand', turnLabel: 'Tur', cardsSeenLabel: 'Sedda kort', finalChanceLabel: 'Chans vid sista turen', expectedCopiesLabel: 'Förväntade exemplar dit', probabilityByTurnLabel: 'Sannolikhet per tur', explanationLabel: 'Minst ett exemplar', noMulliganNote: 'Ingen mulligan: modellen räknar ett urval från den blandade kortleken.', fullRedrawNote: 'Dra om efter miss: en starthand utan målkort ersätts helt en gång.', invalidInput: 'Kontrollera kortlekens regler för att fortsätta.', invalidDeck: 'Välj en giltig kortleksstorlek.', invalidCopies: 'Antalet exemplar måste ligga mellan noll och kortlekens storlek.', invalidHand: 'Starthanden får inte vara större än kortleken.', invalidDraws: 'Dragna kort per tur måste vara noll eller fler.', invalidTurns: 'Välj en tur mellan noll och 60.', cardsLabel: 'kort', copyLabel: 'exemplar',
|
|
10
|
+
},
|
|
11
|
+
seo: [{ type: 'title', level: 2, text: 'Beräkna sannolikheten att dra kort ur din lek' }, { type: 'paragraph', html: 'Kalkylatorn svarar på en praktisk fråga för den som bygger kortlekar: hur stor är chansen att se minst ett exemplar av ett kort före en viss tur? Ange lekstorlek, exemplar, starthand, dragningar och mulligan för en tur-för-tur-bild.' }, { type: 'paragraph', html: 'Den hypergeometriska fördelningen passar eftersom kort dras utan återläggning. Modellen fungerar för samlarkortspel, brädspel, limited-lekar och andra ändliga kortmängder.' }, { type: 'title', level: 2, text: 'Så läser du dragningens tidslinje' }, { type: 'list', items: ['Starthanden är det första urvalet från den blandade kortleken.', 'Varje tur lägger till det inställda antalet dragna kort.', 'Procenttalet betyder minst ett exemplar, inte exakt ett.', 'Förväntade exemplar är ett separat genomsnitt från träffchansen.'] }, { type: 'title', level: 2, text: 'Mulliganantaganden kan ändras' }, { type: 'paragraph', html: 'Omdragningen modellerar en enkel strategi: behåll en hand med målet; annars ersätt hela handen en gång och fortsätt från den nya vägen. Delvisa mulligans, scry, tutors och beslut om andra kort ingår inte.' }, { type: 'tip', title: 'Använd spelets riktiga regler', html: 'Om ditt spel har en annan starthand, extra dragning eller mulliganprocedur ska du ändra fälten. Svaret beror på reglerna och antalet exemplar.' }, { type: 'title', level: 2, text: 'Den hypergeometriska idén på en rad' }, { type: 'paragraph', html: 'För n kort ur en lek med N kort och K målexemplar är chansen utan träff C(N − K, n) / C(N, n). Kalkylatorn använder komplementet 1 − den chansen för minst ett målkort.' }, { type: 'diagnostic', variant: 'info', title: 'Det här simulerar kalkylatorn inte', badge: 'GRÄNSER', html: 'Den följer inte namngivna kort, urval, ersättningseffekter, scry, tutors, flera mål eller hela spelstatusen. Använd resultatet som bas och modellera extra regler separat.' }],
|
|
12
|
+
faq: [{ question: 'Vilken formel används för kortdragningssannolikhet?', answer: 'För minst ett exemplar i n kort används 1 − C(N − K, n) / C(N, n), där N är lekens storlek och K antalet exemplar.' }, { question: 'Fungerar den för fem dragna kort?', answer: 'Ja. Sätt Starthand till 5 och välj dragningar och turer som passar ditt spel.' }, { question: 'Hur fungerar mulliganalternativet?', answer: 'Dra om efter miss ersätter en gång en starthand utan målkort. Det är enklare än ett spels specifika delvisa mulliganregler.' }, { question: 'Varför skiljer sig förväntade exemplar från träffchansen?', answer: 'Träffchansen frågar om urvalet innehåller ett eller flera exemplar. Förväntade exemplar är det genomsnittliga antalet i urvalet.' }],
|
|
13
|
+
bibliography, howTo: [{ name: 'Ange lekstorlek och exemplar', text: 'Ställ in totala antalet kort och hur många exemplar du söker.' }, { name: 'Matcha hand och dragningar', text: 'Ange starthand, dragna kort per tur och sista tur.' }, { name: 'Välj mulliganmodell', text: 'Använd Ingen mulligan för ett sammanhängande urval eller omdragning för ett helt byte.' }, { name: 'Läs tidslinjen', text: 'Jämför procenten för minst ett exemplar i handen och vid varje tur.' }],
|
|
14
|
+
schemas: [{ '@context': 'https://schema.org', '@type': 'SoftwareApplication', name: 'Kalkylator för sannolikhet att dra kort', applicationCategory: 'GameApplication', operatingSystem: 'Web', description: 'Kortdragningssannolikheter för ändliga tabletop-lekar.' }, { '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: [{ '@type': 'Question', name: 'Vilken formel används för kortdragningssannolikhet?', acceptedAnswer: { '@type': 'Answer', text: 'Kalkylatorn använder komplementet till den hypergeometriska sannolikheten utan träff.' } }] }, { '@context': 'https://schema.org', '@type': 'HowTo', name: 'Beräkna kortdragningssannolikhet', step: [{ '@type': 'HowToStep', name: 'Ställ in lekens regler', text: 'Ange lekstorlek, exemplar, hand, dragningar och turer.' }, { '@type': 'HowToStep', name: 'Läs resultatet', text: 'Jämför chansen att se minst ett exemplar i tidslinjen.' }] }],
|
|
15
|
+
};
|