Mutually Exclusive Events Checker
The mutually exclusive events checker determines whether two events can occur together using three supplied probabilities: P(A), P(B), and P(A and B).
Run — free
It applies the defining rule directly: events are mutually exclusive exactly when their intersection has probability zero. Enter each probability as a number from zero to one, and the result clearly states whether the events are mutually exclusive and why. The checker also rejects probabilities outside the valid range, helping catch input mistakes before they affect a probability exercise, analysis, report, or automated workflow.
What mutually exclusive events mean
Two events are mutually exclusive when they cannot happen in the same outcome. The central quantity is their intersection, written P(A and B): the probability that event A occurs while event B also occurs. If that probability is zero, there is no chance of both events occurring together, so the events are mutually exclusive. If it is greater than zero, some overlap exists and they are not mutually exclusive. Consider one roll of a standard die. The event “the result is two” and the event “the result is five” are mutually exclusive because a single roll cannot show both faces. By contrast, “the result is even” and “the result is greater than three” overlap at four and six, so their intersection is not zero. This checker reports the classification from the intersection probability you provide. P(A) and P(B) are included to make the probability statement complete and to validate all three supplied values, but neither marginal probability replaces the required intersection value.
How to enter and interpret the probabilities
Enter P(A), P(B), and P(A and B) as decimal probabilities from zero through one, including either endpoint. For example, a probability of twenty-five percent is entered as 0.25, while an impossible event is entered as 0 and a certain event as 1. The checker validates each field independently. Any missing value, nonnumeric value, infinite value, or probability outside the closed interval from zero to one produces an input error instead of a misleading classification. Once the values pass validation, the decision is exact and direct: P(A and B) equal to zero produces a mutually exclusive result; any positive intersection produces a not mutually exclusive result. The response repeats the accepted probabilities, provides the boolean classification, and adds a plain-English conclusion. The tool does not estimate an unknown intersection from P(A) and P(B), because marginal probabilities alone generally do not determine overlap. Supply the intersection established by your data, model, contingency table, or problem statement.
Using the result correctly
Use the result as a focused check of the mutual-exclusivity condition, especially before applying probability formulas that depend on it. For mutually exclusive events, the addition rule simplifies to P(A or B) = P(A) + P(B), because there is no overlap to subtract. For events that are not mutually exclusive, the general addition rule is required: P(A or B) = P(A) + P(B) − P(A and B). This capability intentionally reports the classification rather than silently calculating a union, which keeps the answer aligned with the question being tested. Remember that mutually exclusive is different from independent. Independent events satisfy P(A and B) = P(A)P(B), while mutually exclusive events satisfy P(A and B) = 0. Two events with positive individual probabilities cannot be both independent and mutually exclusive. Also make sure the probabilities describe the same experiment, population, and time frame. A mathematically valid number can still be conceptually mismatched if its events come from different sample spaces. The API price is $0.002 per request when you automate this check.
What you can do with it
Check a probability exercise
Confirm whether the supplied intersection makes two events mutually exclusive before choosing the correct addition rule.
Validate an analytics assumption
Test whether two reported categories truly have zero overlap before treating their probabilities as disjoint.
Guard an automated workflow
Reject invalid probability ranges and return a deterministic exclusivity classification for downstream logic.
FAQ
What condition makes two events mutually exclusive?
They are mutually exclusive exactly when P(A and B) equals zero.
Why do I need to provide P(A) and P(B)?
They complete the stated probability inputs and are validated, while P(A and B) determines the classification. P(A) and P(B) alone usually cannot determine whether the events overlap.
Are mutually exclusive events also independent?
Not when both events have positive probability. Mutual exclusivity gives an intersection of zero, while independence requires the intersection to equal P(A) multiplied by P(B).
Can I enter percentages?
Convert percentages to decimals first. Enter twenty percent as 0.2 and seventy-five percent as 0.75.
What happens if a probability is outside zero to one?
The request returns an invalid input error because values below zero or above one are not probabilities.
What does the API request cost?
The API price is $0.002 per request.
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/stat/mutually-exclusive-check \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"p_a":0.35,"p_b":0.4,"p_a_and_b":0}'const res = await fetch("https://api.kit.forhosting.com/stat/mutually-exclusive-check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"p_a": 0.35,
"p_b": 0.4,
"p_a_and_b": 0
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/stat/mutually-exclusive-check",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"p_a": 0.35,
"p_b": 0.4,
"p_a_and_b": 0
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/stat/mutually-exclusive-check", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"p_a":0.35,"p_b":0.4,"p_a_and_b":0}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"p_a":0.35,"p_b":0.4,"p_a_and_b":0}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/stat/mutually-exclusive-check", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"p_a": 0.35,
"p_b": 0.4,
"p_a_and_b": 0
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "stat.mutually_exclusive_check",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |