Simple random sampling (SRS) is the probability sampling method in which every member of a defined population has an equal and independent chance of being selected for the sample. “Equal” means no unit is more or less likely to be chosen than any other. “Independent” means the selection of one unit has no effect on the probability that any other unit is selected. Both properties matter separately: a method can give every unit an equal chance while still violating independence (e.g. selecting entire households together, so members of the same household aren’t chosen independently of each other), and a method can preserve independence while giving unequal chances (e.g. drawing more heavily from an easier-to-reach subgroup). Only a method that satisfies both is simple random sampling in the strict sense, and it is that combination — not “randomness” in a loose, everyday sense — that justifies using standard probability formulas to compute a margin of error and generalize a sample statistic back to the population.
This guide covers the sampling frame that SRS depends on, the actual step-by-step mechanics of drawing one (by hand, in Excel, in R, and in Python), worked examples at three different scales, how SRS compares to other probability and non-probability methods, sample-size determination, and what a Methods section needs to report.
Why the Sampling Frame Is the Real Constraint
The practical difficulty in simple random sampling is almost never the randomization step — it’s obtaining a sampling frame: a complete, enumerable list of every member of the population, each identifiable and reachable. See CASRAI’s entry on sampling methods for how the frame requirement relates to probability sampling generally. You cannot draw a simple random sample without one, because the selection mechanism has to be able to assign every population member a number and give each number an equal chance of being drawn.
Three frame problems recur in practice and each one biases the resulting sample in a specific, predictable direction:
- Undercoverage — the frame omits population members who exist but aren’t on the list (e.g. a hospital patient database that only includes patients seen after a system migration date, silently excluding longer-tenured patients). Anyone excluded from the frame has a zero, not merely low, chance of selection — this is a coverage error, not a sampling error, and no amount of correct randomization afterward fixes it.
- Duplicates — the same population member appears on the frame more than once (a researcher listed under two email addresses, a patient with two medical-record numbers after a records merge), giving that unit a higher effective selection probability than everyone else and quietly violating the “equal chance” requirement.
- Ineligibles — the frame includes units that don’t actually belong to the target population (a departmental staff list that hasn’t been updated to remove people who left, a mailing list that includes duplicate or defunct organizational accounts). Selecting an ineligible unit doesn’t corrupt the sample statistically if it’s simply excluded and replaced, but a frame with a high ineligible rate is often a symptom of the same staleness that’s producing undercoverage elsewhere.
In practice, no real frame is perfect. The question a Methods section needs to answer honestly is not “was the frame perfect” but “how far does the frame diverge from the target population, and in what direction” — see CASRAI’s guide on defining the population for how the target population and the frame relate as two distinct things that should each be stated explicitly.
How to Actually Draw a Simple Random Sample
The mechanics are the same regardless of scale — only the tooling changes:
- Assign each frame member a unique, sequential number — 1 through N, where N is the total population size. This is what turns a list of names or records into something a random-number mechanism can select from.
- Decide sample size (n) in advance — see the sample-size section below.
- Generate n random numbers in the range 1 to N, using one of:
- A random number table (e.g. the RAND Corporation’s published table, or an equivalent) — read digits in a pre-committed direction and take groups of digits matching N’s digit-length, discarding any number that falls outside 1–N or repeats.
- Excel/Google Sheets — generate a helper column with
=RAND()next to every frame row, then sort the whole frame by that column and take the top n rows; or, if the frame is already numbered 1–N, generate n values with=RANDBETWEEN(1,N)and re-roll any duplicates. - R —
sample(1:N, size = n, replace = FALSE)draws n unique numbers from the frame without replacement in one call; setset.seed()first if the draw needs to be exactly reproducible for a pre-registration or audit trail. - Python —
random.sample(range(1, N + 1), n)(standard library) ornumpy.random.choice(N, size=n, replace=False)draw n unique indices without replacement in one call.
- Match the numbers back to the frame to identify the selected units.
- Handle duplicates or ineligibles as they surface — discard and draw a replacement number, keeping a log of what was discarded and why, so the eventual sample size still equals the pre-specified n.
With vs. Without Replacement
Sampling without replacement means once a unit is selected it’s removed from the pool and cannot be selected again — every function and method above defaults to this (replace = FALSE/replace=False is the survey-research default, not an edge case). Sampling with replacement means a selected unit is returned to the pool and could, in principle, be drawn again.
Survey and research sampling overwhelmingly uses without replacement for two reasons. First, it makes no practical sense to have the same person or record counted twice in one sample — a respondent can’t meaningfully answer the same survey twice as two independent observations. Second, for a finite population, sampling without replacement is more statistically efficient (it produces a smaller standard error for the same sample size) because each additional draw carries slightly more new information once earlier draws are excluded from the pool. Sampling with replacement matters mainly in specific statistical contexts — resampling/bootstrap methods, or theoretical derivations that assume an effectively infinite population — not in the initial selection of a real-world study sample.
Worked Examples
The following are illustrative, worked-through examples showing the mechanics at increasing scale. They are constructed to demonstrate the method, not drawn from a real study or institution.
Example 1: A 40-Person Department
A researcher wants to survey 10 of the 40 faculty and staff in a department about research-support satisfaction. The department’s HR roster is the frame — complete, current, and small enough to check by eye for duplicates. Each of the 40 names is numbered 1–40. In R: sample(1:40, size = 10, replace = FALSE) returns 10 unique numbers, matched back to the roster. At this scale, frame problems are easy to catch manually (a quick read-through confirms no one is listed twice and no one who left the department six months ago is still on it), so the entire exercise is dominated by the randomization step, not the frame-construction step.
Example 2: A 5,000-Record Patient List
A researcher wants to sample 200 patients from a clinic’s 5,000-record electronic health system for a chart-review study. Here the frame itself is the harder problem: the export needs to be de-duplicated (patients with two medical-record numbers after a records merge, a known EHR failure mode), filtered to the actual eligibility window (only patients seen within the study’s defined date range, not the system’s full historical archive, which would include ineligible closed cases), and checked for whether recently registered patients are underrepresented if the export was pulled before same-day registrations synced. Once the cleaned frame is confirmed at, say, 4,850 eligible records, those are numbered 1–4,850 and 200 numbers are drawn without replacement (random.sample(range(1, 4851), 200) in Python). The randomization step itself takes seconds; the frame cleaning is where most of the actual work and most of the risk of silent bias sits.
Example 3: A National Frame
A researcher wants a simple random sample of 1,000 researchers nationally from a professional-body membership list of roughly 85,000 active members. At this scale, true simple random sampling becomes logistically strained even once the frame exists: a national list is rarely as clean as it looks (lapsed memberships not yet purged, institutional group accounts alongside individual ones, members who moved institutions with stale contact details), and even a perfectly executed random draw scatters selected members across every region and institution type, which can make in-person or resource-intensive data collection impractical. This is the scale at which many researchers substitute stratified or cluster sampling for practical reasons even when simple random sampling remains the theoretical ideal — covered in the comparison section below.
Simple Random Sampling vs. Other Probability Methods
| Method | How units are selected | When it’s preferable to SRS |
|---|---|---|
| Simple random sampling | Every unit has an equal, independent chance; drawn directly from a numbered frame | Theoretical baseline; best when a complete frame exists, the population is reasonably homogeneous, and cost/geography aren’t binding constraints |
| Systematic sampling | A random start point, then every k-th unit from the ordered frame | Frame is large and orderly; simpler to execute by hand than generating N individual random numbers, with statistically near-equivalent results — unless the frame has a hidden periodic pattern that lines up with the sampling interval |
| Stratified sampling | Population divided into strata first; independent random sample drawn from each | A known subgroup (institution type, severity, region) is plausibly related to the outcome and small subgroups need guaranteed representation — see CASRAI’s stratified sampling guide |
| Cluster sampling | Population divided into naturally occurring clusters (clinics, schools, regions); whole clusters are randomly selected, then every unit within a selected cluster is included (or sub-sampled) | No individual-level frame exists but a frame of clusters does, or data collection cost/geography makes a scattered SRS draw impractical (e.g. the national-list example above) |
| Multistage sampling | Combines the above in sequence — e.g. randomly select regions, then randomly select institutions within selected regions, then randomly select individuals within selected institutions | Large, geographically or hierarchically structured populations where no single-stage frame is practical to assemble at all |
The pattern across every alternative to SRS is the same: each trades some of SRS’s theoretical simplicity and statistical purity for a practical gain — cost, feasibility, guaranteed subgroup representation, or the ability to work without a full individual-level frame. Simple random sampling is often the textbook ideal precisely because every other method is a deliberate compromise away from it, made for a concrete, stated reason rather than convenience alone.
Simple Random Sampling vs. Non-Probability Methods
Non-probability methods — convenience sampling, purposive sampling, quota sampling, snowball sampling — select units by some mechanism other than a known, equal, independent probability. See CASRAI’s comparison of random sampling vs. convenience sampling for a direct side-by-side. The distinction is not a matter of degree: it determines whether the study can use inferential statistics at all in the classical sense.
Without a probability selection mechanism, there is no defined basis for computing a standard error or a margin of error, because those calculations assume a known probability of selection for every unit. A sample recruited by convenience, referral (snowball), or researcher judgment (purposive) can still be useful — for exploratory work, hard-to-reach populations, or qualitative depth — but confidence intervals and p-values calculated on such a sample, and any claim that the sample statistically represents a defined population, are not statistically defensible in the way they are for a probability sample. This is the single most consequential trade-off between the two families, and it’s worth stating explicitly in a Methods section rather than leaving the sampling method’s implications for a reader to infer.
Determining Sample Size
Sample size for a simple random sample is normally determined before data collection, using a power or precision calculation with these inputs:
- Effect size — the smallest difference or association the study needs to be able to detect, usually set from prior literature, a pilot study, or the smallest effect considered practically meaningful.
- Statistical power — the probability of detecting a true effect of that size if it exists, conventionally set at 0.80 or higher.
- Significance threshold (alpha) — the false-positive rate the study is willing to accept, conventionally 0.05.
- Variability — the expected standard deviation (or, for a proportion, the expected proportion itself) in the population being sampled; higher variability requires a larger sample to achieve the same precision.
- Desired precision — for a purely descriptive (rather than hypothesis-testing) study, the acceptable margin of error around an estimate, e.g. a poll wanting a result accurate to plus-or-minus 3 percentage points.
See CASRAI’s full guide on power analysis and sample size calculation for the formulas and software (G*Power, R’s pwr package, and others) that turn these inputs into an actual required n. Sample-size calculation and sampling-method choice are separate decisions that are often made to look like one step — but a correctly powered sample size drawn with a flawed selection mechanism doesn’t rescue the study’s validity, and a perfectly executed simple random draw at too small an n doesn’t give the study adequate power either. Both have to be right independently.
Sampling Error vs. Non-Sampling Error
Sampling error is the expected, quantifiable difference between a sample statistic and the true population parameter that arises purely from having measured a sample rather than the entire population — it shrinks as sample size grows and is exactly what a margin of error or confidence interval expresses. It is not a mistake; it’s an unavoidable, calculable property of sampling itself.
Non-sampling error is everything else that can make a sample statistic diverge from the truth: a flawed sampling frame, measurement error, data-entry mistakes, and — the most consequential form in practice — non-response bias. Non-sampling error does not shrink with a larger sample size the way sampling error does, and it isn’t captured by a standard confidence interval at all, which is exactly what makes it dangerous: a study can report a narrow, correctly calculated margin of error while still being badly wrong for reasons the statistic itself gives no hint of.
Non-Response Bias
A simple random sample that is correctly drawn is a random sample of the population. The set of people who actually respond is not automatically a random sample of that same population unless response is unrelated to the outcome being studied — an assumption that usually needs justifying, not assuming. A survey drawn as a flawless simple random sample of 1,000 people that gets a 20% response rate is, in the respondents who actually answer, no longer a random sample of the original population unless the researcher can show non-respondents don’t differ systematically from respondents on the variables that matter to the study. In practice they very often do (busier people, sicker patients, and people with stronger opinions on the topic all tend to respond at different rates than the population average), which is why response rate is a required reporting item, not a footnote — see the reporting section below and CASRAI’s entry on survey research methods for how response-rate management fits into survey design more broadly. This also connects directly to generalisability: a random selection mechanism is necessary for generalizing a sample’s results to its population, but it is not sufficient if non-response has quietly changed who the “sample” actually consists of by the time data collection ends.
What to Report
A Methods section describing a simple random sample should state, explicitly:
- The sampling frame — its source, size, the date it was pulled or last updated, and any known coverage gaps, duplicates, or ineligibles that were identified and how they were handled.
- The selection method — that simple random sampling was used specifically (not just “randomly selected,” which is ambiguous between SRS, systematic, and stratified methods in common usage), and the tool or software used to generate the random selection.
- Sample size and how it was determined — the power/precision calculation and its inputs, or the practical constraint that set it if no formal calculation was performed.
- With or without replacement — stated explicitly if there’s any reason a reader might assume otherwise.
- Response rate (for surveys or any data collection requiring active participation) — the number sampled, the number that actually provided usable data, and the resulting rate, alongside any available comparison between respondents and non-respondents on key demographic or outcome-relevant variables.
- Any weighting applied — if the analysis weights the achieved sample to correct for known non-response patterns or frame imperfections, state the weighting variables and method.
See CASRAI’s broader guide on data collection methods for how sampling fits into the wider set of decisions a Methods section needs to document.
Frequently Asked Questions
What is an example of simple random sampling?
Numbering every name on a complete roster and using a random-number generator — a random number table, Excel’s RANDBETWEEN, R’s sample(), or Python’s random.sample() — to draw a fixed number of those numbers without replacement, then including whichever roster members correspond to the drawn numbers. See the three worked examples above for the mechanics at different scales.
What’s the difference between simple random sampling and random sampling generally?
“Random sampling” is often used loosely to mean any probability method, including systematic, stratified, and cluster sampling, all of which involve randomization at some stage. Simple random sampling is the specific case where every unit is selected directly from the full frame with equal, independent probability — no intermediate grouping, ordering, or clustering step.
Why is simple random sampling considered the “gold standard” but rarely used at scale?
It’s the theoretical baseline that most inferential-statistics formulas assume, and every deviation from it is a deliberate, justifiable trade-off. But it requires a complete individual-level frame and, at scale, tends to scatter the selected sample geographically or organizationally in a way that makes data collection expensive — which is why stratified, cluster, and multistage designs are more common in large real-world studies, as covered in the comparison table above.
Can you use simple random sampling without a complete list of the population?
No. The absence of a complete, enumerable sampling frame is the single most common reason researchers substitute another method (often cluster sampling, or a non-probability method entirely) — see the sampling-frame section above.
Does a larger sample fix non-response bias?
No. A larger sample reduces sampling error, but non-response bias is a form of non-sampling error that doesn’t shrink with sample size — a bigger sample with the same skewed response pattern is still skewed. See the non-response bias section above.







