How to random assign subjects to a group without any equipment?

I am working with a clinician and need her to randomly assign patients into one of two groups with the goal of having roughly equal numbers in both groups. The clinician does not have access to a random number generator and it would be inappropriate for her to flip a coin before the allocation. We initially decided upon using the second hand on a clock and splitting on the top/bottom half of the minute, but the exam room does not have a clock and she does not wear a watch.

We are thinking of splitting on the first letter of the first name which is on the patient's chart. We would then flip every couple of weeks whether the first half of the alphabet was in group A or group B. Is this a reasonable approach? Is there a better one? If we go this way, what letter do we split on to give roughly equal sizes?

If the patient has given you some kind of ID number (soc#, drivers license, patient number, birthday month... most any number) just split by even/odd.

If we assume that such numbers are sequential or randomly assigned, then there should be no large bias, or association with any patient characteristics.

If you have two or more numbers available, you could add the last digits and see if that is even or odd.

Disclaimer: I do not suggest using this solution for any real-world applications. This is simply a demonstration.

I'm not sure what your background is, but this is really easy to do in code. You could simply run a random number generator and print off the results for the clinician.

Here is an example solution in R:

ngen <- function(patients, weeks){
df <- data.frame( t( replicate(patients, sample(c("A","B"), weeks, replace=T)) ) )
colnames(df) <- paste(replicate(ncol(df), "Week"), as.character(1:ncol(df)))
rownames(df) <- paste(replicate(nrow(df), "Patient"), as.character(1:nrow(df)))
print(df)
}


Example Usage:

ngen(patients = 10, weeks = 5)

           Week 1 Week 2 Week 3 Week 4 Week 5
Patient 1       A      B      A      B      A
Patient 2       B      B      A      B      A
Patient 3       A      B      A      A      B
Patient 4       A      A      A      A      A
Patient 5       A      B      A      A      A
Patient 6       B      B      B      A      B
Patient 7       A      A      A      B      A
Patient 8       A      B      A      B      B
Patient 9       B      A      A      B      B
Patient 10      B      A      B      A      B


Check by simulating 10,000 weeks:

m <- ngen(patients = 10, weeks = 10000)

# look at patient 1:
mean(as.numeric(m[1,]) - 1)


The mean condition for patient 1 is 0.5, i.e., even chance of being in condition A or condition B as n weeks goes to infinity.

• I was hoping for something simpler. I do not want the clinician to have to refer to a chart. – StrongBad Mar 17 '16 at 19:30
• do they have a smart phone? – lnNoam Mar 17 '16 at 19:33
• Generally, it is considered poor practice for a clinician to look at their phone while treating a patient. Hence my requirement for no "equipment". – StrongBad Mar 17 '16 at 19:39
• Personally, when I do research I try to remove all traces of human bias. Humans have terrible intuitions when it comes to randomness. However, there is a nice paper I found reviewing this exact problem: ncbi.nlm.nih.gov/pmc/articles/PMC3136079. They seem OK with the idea of a coin flip, provided you have a sufficiently large N. – lnNoam Mar 17 '16 at 19:48
• Flip the coin before you greet the patient? That removes a potentially awkward and unprofessional-seeming moment from the interaction! If you forgot, flip it after the patient leaves. – user9634 Mar 18 '16 at 1:05

You could generate a random 0-1 sequence at the start of the study and allocate participants as they come in based on that sequence.

You can use this simple online tool to generate the sequence ( https://www.randomizer.org/ ), if you want to avoid doing some basic programming.

You'll need to have a system for allocating IDs to participants, so I imagine that just preparing the sequence of random allocation ahead of time should be okay.