# Is there a simpler way to roll for letters?

My daughter, age 10, likes to generate the names, or at least initials, when creating characters for various games (simple homebrew RPGs at the moment, or even just drawing the characters and storytelling - she really enjoys creating characters), by rolling. If we roll initials, that gives a prompt for a random name, which is enough. I thought fully random names were too hard, until I came across some of the suggestions below.

Currently we either map 1d20 to the 20 most common letters in English, or if we want to include all the letters we roll 2d6 as follows:

• one of our d6s is (re-)numbered 0-5. Multiply that by 6
• add a normal d6
• if the total is over 26, reroll, otherwise 1=A...26=Z.

We might roll 2-3× for a character's first initial, last initial and perhaps a nickname.

Is there a better way to map 1-26 onto common dice? We have d4, d6, d8, d10, d12 and d20s available. 'Better' would mean less chance of rerolling, simpler to explain to her friends, or preferably both. The distribution doesn't have to be perfectly flat - after all it doesn't affect the game mechanics - but we wouldn't want to be too heavily weighted towards the middle of the alphabet.

For context, think 10-year-olds, but it's more about the dice mechanics than about games with kids.

• Locking comments for a while to put an end to the arguing and dig through all the flags. If you really want to debate this specific question, do that on meta. If you really want to argue with another specific user, do that in a private chat. Jan 9 at 19:11
• No! :( I was literally about to post my answer when the header came up saying it had been closed! FWIW, I think that it's a useful post - difficulty in coming up with names is an extremely common issue in role-playing games. Jan 10 at 3:15
• @GMJoe There are many questions that are only tangential to RPGs and ask about dice statistics on this site, for example over 100 questions on how to generate probabililty calculations with anydice. I think excluding these kinds of questions, which are really useful for the game, just like this one, is too narrow a take. Could be discussion for meta. Jan 10 at 7:32
• As I said before, I'll respect the community consensus. But the answers I got here were far more creative, interesting, and relevant than if I'd asked a question about mapping random distributions on a maths site. I certainly didn't expect this question to get as much attention as it did. Jan 10 at 9:03
• I'm voting to reopen on the premise that a question can be suitable for more than one stack. Perhaps it is better suited on the Math stack and perhaps you'd get great answers there regarding statistics. But I see some of the answers that folks have come up with and some are based in actual experience with this problem, thusly, we are seeing answers derived from real world experience. Don't know if you'd get the same thing on another stack. Jan 10 at 14:31

## A deck of cards is superior to dice

A typical 52-card deck has exactly twice as many cards as letters in the English alphabet, which is potentially pretty convenient:

### Red Cards for the first half of the alphabet

A B C D E F G H I J K L M
A♥
A♦
2♥
2♦
3♥
3♦
4♥
4♦
5♥
5♦
6♥
6♦
7♥
7♦
8♥
8♦
9♥
9♦
10♥
10♦
J♥
J♦
Q♥
Q♦
K♥
K♦

### Black Cards for the second half of the alphabet

N O P Q R S T U V W X Y Z
A♣
A♠
2♣
2♠
3♣
3♠
4♣
4♠
5♣
5♠
6♣
6♠
7♣
7♠
8♣
8♠
9♣
9♠
10♣
10♠
J♣
J♠
Q♣
Q♠
K♣
K♠

It’s a shame that J, K, and Q don’t line up with Jack, Queen, and King, particularly since the Jack and King are fairly close.

## You should fill in vowels, however

The above makes consonants roughly 5× as likely as vowels, which is not really pronounceable most of the time. I find the best way to handle this is to just pick vowels that sound good with your randomized name; in a lot of cases, a particular vowel sound often feels “natural” in a given location and that’s good—assuming roughly human-equivalent vocal systems, it would for characters, too. This isn’t random, but it will sound better.

(This is what many of the real world’s languages do, after all, since many languages don’t feel the need to mark vowels separately at all.)

The alternative is to roll 1d6 for A, E, I , O, U, and Y—though this still doesn’t tell you where to put them. You could just alternate consonant and vowel, though again, I think stepping away from randomness here and exercising a little judgment in where to put them is a good idea.

• @Dave As noted in my parenthetical, many scripts still do that today. Jan 9 at 17:01
• @From Fair enough. Jan 10 at 5:13
• It pains me that it took me this long to think to search for novelty 13-sided dice on the internet. Jan 10 at 9:33

Let me quote myself for a starter:

## How to choose a name is up to you

Ok, now that out of the system, generating a letter to start with is not the worst way. I have in the past generated random letters and then looked at culturally appropriate naming tables for the game played (you can find a list of names in many game books), or one of the other methods I elaborated on in the answer I quoted from.

For a very random example, such a list of appropriate or common names for Cimmerians can be found in Conan - Adventures in an Age undreamed of (2017), p.48. Elfish names for Aventuria can be found in Aus Licht und Traum - Die Elfen Aventuriens (2006), p.57-58. Owen K.C. Stephens: By Any Other Name; in: Dragon Magazine #251 (1998), pp.52 is describing a method to generate random names from particles for elves in the Forgotten Realms.

Once you got your start letter, and maybe another one or two, you usually do have enough to find a name, but if you make complete alien names... go for all letters. Personally, I prefer to chuck in the name list of a game into excel and then draw a random name or name part from that hat, but you do you!

## The mapping problem

Mapping letters do a D20 however is a little problematic, as some of the 26 letters won't fit. d20+d6, as you noticed, creates a skewed pattern and 1d20+2d6 is even worse. So, we need a method to map 26 letters differently.

## Mapping by joining letters

There's a number of letters that can be merged into one number and then deciding which variant it is by rolling a different die. I would combine the following:

• I + J + Y - 1d6: 1-3=U, 4-5=J, 6=Y
• U + V + W - 1d6: 1-4=U, 5=V, 6=W
• S + X + Z - 1d6: 1-3=S, 4=X, 5-6=Z

This results in 20 letters with a slight skewing away from those merged letters, mapped as follows:

1=A; 2=B, 3=C, 4=D, 5=E, 6=F, 7=G, 8=H, 9=I/J/Y, 10=K, 11=L, 12=M, 13=N, 14=O, 15=P, 16=Q, 17=R, 18=S/X/Z, 19=T, 20=U/V/W

Mapping triplets skews the probabilities of the merged letters down, the rest is equally prbable.

## Binary letters

Each letter has a binary value in ASCII. For us relevant is the center column: A is 0100 0001, B is 0100 0010, and so on till Z is 0101 1010.

To generate any of the 26 letters, you write down 010 and then throw 5 coins: Heads are 1, tails are 0. If the resulting number is not assigned as 0100 0000 and 0101 1011 or greater are, redo the roll, or assign special characters for like Æsc, the Umlauts Ä Ö Ü or diacretic like '.

There are 6 reroll events, and each other letter has the same probability.

## Skewing for vowels

There are 5 vowels and Y, which can take a vowel sound, and 20 other consonants. Split the generation in two steps:

• first throw a coin (or use a different die).
• On Heads, you roll 1d6 mapped to A, E, I, O U, Y
• On tails throw 1d20 mapped to the remaining consonants.

This skews the naming convention to start with vowels 50% of the time for 8.3% per letter while every consonant has a 2.5% chance because the d20 and the d6 are flat distributed in themselves.

Using a different die to skew the probabilities alters the chances. I did not duplicate mathematically identical dice (e.g. 1 on 1d10 is the same as 1&2 on 1d20):

• 1-3 on 1d8 for vowel-dice results in 6,25% per vowel and 3,125% per consonant.
• 1 on 1d3 for vowel-dice results in 5.56% per vowel and 3,3% per consonant.
• 1-3 on 1d10 for vowel-dice results in 5% per vowel and 3,5% per consonant.
• 1 on 1d4 for vowel-dice results in 4.167% per vowel and 3.75% per consonant.
• 1&2 on 1d10 for vowel-dice results in 3,3% per vowel and 4% per consonant.
• 1 on 1d6 for vowel-dice results in 2,78% per vowel and 4.167% per consonant.
• 1-3 on 1d20 for vowel-dice results in 2.5% per vowel and 4.25% per consonant.
• 1 on 1d8 for vowel-dice results in 2.08% per vowel and 4.307% per consonant.

## Black Excel Magic

### Random Letter by Excel

Use a spreadsheet and fill in the following formula: =FLOOR(RANDBETWEEN(1,26),0) This generates a number between 1 and 26, which can be easily mapped from A to Z without problems. The resulting distribution is by the nature of the generation flat.

### Natural Distribution of Letters

If you are particularly adventurous, alter the formula to generate the letters by chance of them appearing in English:

• A1:A26 - Letters A to Z
• B1:B26 - each letter's probability
• C1 - =map(B1:B26,lambda(nn,Floor(sum(B\$1:nn),5)))
• D1 - =Index(A1:A26,MATCH(FLOOR(RAND,5),c1:c26,1))

the field D1 will now spit out one letter from A to Z, mimicking the natural composition.

Or you look at this spreadsheet, where I did the dark magic for you. The spreadsheet also generates a 12-letter string with that method, which might be pronounceable or not. With a little letter shoving it can make a name if you are creative. If you don't like the generated seed, just wait a minute - I set up the spreadsheet to recalculate every minute or so.

The distribution is decidedly not flat, but skewed to the percentages given - ca 12% of the letters will be E, but 0.2 will be Z.

### Random Name from the hat

Personally, I prefer a "name/name particle from the hat" method. It's actually simpler, and shown in the same spreadsheet on the 2nd page:

• Column A holds all the names or name particles that you like or that the book suggests
• C1 is =RANDBETWEEN(1,COUNTUNIQUE(A:A)) and generates the number of a row
• D1 is =Index(A:A,C1) and plucks the name from the A column.

Personally, I love this method, especially using name particles to generate characters for games. Name particles are whole characters or syllables, that when combined create a full name. An example of taking 2 particles is also on the "name from the Hat" page.

## Natural Letter Mapping with 1d1000

Using the natural distribution can be used with manual dice, as generated in the C-column with 1d1000 to allow the needed precision as quite some letters only have a rounded 0.2%.

0-85=A 86-106=B, 107-151=C, 152-185=D, 186-297=E, 298-315=F, 316-339=G, 340-369=H, 370-445=I, 446-447=J, 448-458=K, 459-513=L, 514-543=M, 544-609=N, 610-681=O, 682-713=P, 714-715=Q, 716-790=R, 791-848=S, 849-917=T, 918-954=U, 955-964=V, 965-977=W, 978-980=X, 981-997=Y, 998-999=Z.

The same as for the Excel-Variant applies. Shifting to letters you want is easy.

### Altering?

It's easy to alter the spread of letters to accustom your liking.

### In need of 1d1000?

A d1000 can be done by rolling 1d10 three times and just writing down the numbers as they come: 000 is 0, 1-1-1 is 111, 9-4-6 is 946.

• Slight nit with binary letters: you could throw 5 tails, getting 01000000, which doesn't map to anything. You could start 'a' there, or set that to an apostrophe or "roll again, but add an umlaut", etc.. Jan 9 at 15:11
• And, for completeness: the "skewing for vowels" odds can trivially be skewed differently by using a different die and choosing which values mean "vowel"; I love it! Jan 9 at 15:13
• Several rather nice ideas there. I very much agree with the first point. I particularly like the mapping by joining and skewing for vowels, though I might skew a bit less by rolling 1d4, vowel if 4, or 1d6, vowel if 5 or 6. For natural mapping 1d100 (we have 1s and 10s d10s) would also work, obviously with more rounding, but Scrabble has done the rounding for us. But she wants exotic names to come up quite often so flat is fine. Nicely though, you could adapt this approach to natural frequencies of initial letters (of English words - lots of Ss, or names - surprisingly many Js) Jan 9 at 16:18
• @Trish slight issue with the distribution of letters method. Note that the distribution of letters in general is significantly different from the distribution of letters as the first letter in a word. For example, there are way fewer words that start with "X", than words that have an "x" in them. More generally, the frequency distribution in words as used is significantly different from words in the vocabulary - words like I, a, at, in, on, for etc. dominate English as used. I am sure the distribution of letters in names will also be different. Jan 9 at 23:35
• @DaleM true, but adapting to a different spread is almost trivial once you just assign percentages to them, and make sure that they sum up to 1 in the end. (or to 1.0000) Jan 10 at 1:43

This problem came up in the design of Traveller when aliens were introduced. They got a bit more involved in language design, but in principle, all they did was take the defined vowels and consonants of the language and put them into a set of 6x6x6 tables (one for initial consonants, one for vowels, and one for final consonants), then rolled 3D6 (to be read as three separate numbers, e.g., first red, then white, then blue die) to pick the specific phoneme. In order to ensure pronounceability by human vocal apparatus, syllable structure was defined (and every syllable had to have a vowel), and you rolled each syllable on the tables, then stuck them together. This way, you wouldn’t get unpronounceable strings like LRBTSKM, but KHLAPTOKMAR was possible.

If you want a different “feel” to a language, use a different distribution of vowels and consonants.

The initial setup - defining the tables - takes a bit more time, but once you have them, you can keep reusing them every time that particular language is needed.

If you want code to implement this idea, I wrote some to implement Traveller’s process; feel free to download and study or use it from http://www.freelancetraveller.com/infocenter/software/wordgen.zip

(ETA: The “feel” of the language is defined by the availability and relative frequency of specific phonemes; change that and you change the “feel” (and sound!) of the language.)

• This is a very nice idea that goes beyond what we currently do. I'll see if we can adapt it for a more human (+familiars) feel Jan 9 at 16:10
• @ChrisH - There are a few language definition files in the zip file I linked to that are for human languages, and some of the alien languages aren't necessarily 'bad' for a 'human' feel - IIRC, the designers of "Vilani" in that file based it on Akkadian. Jan 9 at 16:13
• Where can we look to find these details? For example, is there a Traveller book and chapter we should look at? Jan 9 at 16:14
• @doppelgreener - If you get the Classic Traveller CD-ROM from Far Future Enterprises (farfuture.net), it has all the Alien Modules with their respective language generation tables (and an explanation of how to use them). There may be some fan sites that duplicate the process with their own tables, but I haven't run across any of them. Jan 9 at 16:16
• FWIW, how well this works with a language depends on the language. It’s actually very good for Japanese, because there are only 105 valid syllables (really morae, but that distinction does not matter here) and you can mostly combine them in almost any order you want, but it kind of sucks for English because there are literally thousands of valid syllables in the English language and many complex rules for ordering (for example, some syllables are only valid if they are not stressed). Jan 9 at 22:27

## Scrabble Tiles

A bit of a frame challenge, since you ask for dice, but I think this addresses the spirit of the question, which is about how to make a random process simple enough for a 10 year old to feel ownership and engagement, rather than having them roll a die and then you having to compute things and tell them what they rolled.

Get out your Scrabble tiles (or pick up a set at a thrift store, or make your own) and have them blind draw as many as desired from a bag. They will immediately know and be able to use what they drew.

If the language being replicated is similar to English, this has the advantage of roughly representing the frequencies of the letters in English (albeit not first letters, if just drawing for initials).

If you don't like the frequencies of letters in a full set of tiles (as you comment, 12 E's is too many), you can remove some - or even add some from another set. The beauty of this method for working with children is that you can play with all of the probability stuff beforehand, unseen, making it as complicated a process as you want, but when they draw the letter they see is the letter they get, rather than having to have you interpret a number.

Representing a language that is not English might entail modifying some tiles for non-standard letters - permanent marker should work on the blanks if you don't mind altering them. Alternately you could set up some rules beforehand that change some identities, or require a second draw. Keep these simple, in the spirit of the players understanding the results for themselves. For example, any vowel requires a second draw, and if the second draw is also a vowel, it is a short pause (usually shown as an apostrophe), but if both draws are "e" it is a click (usually shown as an exclamation mark). Or if the first draw is an r, draw again, and if the second draw is a consonant, it is a rolled r. Etc.

• We may give it a go, +1, but it wouldn't really suit what we do now for a couple of reasons, mainly to do with the distribution - we're currently rolling for initials, and 12% Es is a bit much. Jan 9 at 20:26
• @ChrisH Sure, but as stated in my answer, you could easily just leave a few E's out. Or have an E followed by any vowel count as an E, while an E followed by any consonant as a letter / sound specific to the language of the character. The nice thing about tiles is you can physically manipulate the distribution beforehand (by removing tiles) in a way that makes the result immediately intuitive for your daughter, rather than having a roll that then has to be mapped to a table of results.
– Kirt
Jan 9 at 22:28
• It's also not difficult to obtain Scrabble® sets for other languages, and Wikipedia has the actual letter distributions for (some of) those other languages. Jun 30 at 10:30

# An alternate method with 36 "letters"

Instead of attempting to map dice rolls to 26, I'm instead going to map the alphabet to a conveniently rollable number.

The letter pairs 'sh,' 'th,' 'ch,' and 'ng' in English represent their own sounds instead of the two component consonants placed together (there are exceptions of course, English always has exceptions). Adding these to the current standard alphabet gives us a count of 30. Now I might have a d5 at home, but it would be even more convenient if we could get up to 36 elements in our list so that we can make a table with 1d6 for each row and column. Duplicating the 6 vowels (counting Y) gets us there exactly:

You could potentially go farther with the idea of mapping sounds instead of letters, but nailing down exactly which sounds are in English is hard and using sounds not in English probably requires extra background knowledge for the participants.

• shouldn't colum 1, row 3 read "QU"? Jan 9 at 19:02
• While that's standard for a lot of European languages, it isn't universal. Jan 9 at 19:22
• For a d5 all you need is a d10, 1 or 2 is 1; 3 or 3 is 2; 5 or 6 is 3; 7 or 8 is 4; 9 or 0 is 5. Been doing a d5 like that since I first got a d10 all those years ago ... so your initial gid being 6x5 is very doable. Jan 9 at 19:48
• Creative! It should have occurred to me as I'm trying to learn a little bit of Welsh, which has 29 letters in the alphabet, several of them digraphs. And of course my own first name. Jan 9 at 20:21

# Prime Time!

26 = 2 * 13

But if we count "Y" as a vowel we can break apart the 6 vowels (A E I O U Y) and the remaining 20 consonants into two sets, and we have dice for those! Let's do something with that.

# Full word generation(?!)

1d4 times, repeat:

1. (1d3 - 1) (0, 1 or 2) Consonant(s), roll 1d20 for each.
2. 1 Vowel, roll 1d6.

This will generate 1-4 vowels, potentially preceeded and/or separated by one or two consonants.

## Example

1. 1d4 repetitions, I roll 2.

2. 1d3 - 1 consonants, I roll 2 on a d6, which divided by 2 (and rounded up) is 1. Minus one, so no starting consonant.

3. 1d6 for a vowel, I roll 5, which is the letter "I".

4. 1d3 - 1 consonants, this time I roll 3 on my d6, which divided by 2 and rounded up becomes 2. Minus one, so one consonant.

5. 1d20 for a consonant, I roll 4, which is the letter "D".

6. 1d6 for a vowel, I roll 2, which is the letter "O".

My weird name/word of the day is "Ido"!

No guarantees that words with X or Q will be easy to pronounce, though...

• how do you get 6 vowels? There are 5: AEIOU. You need to explain that/if Y is used as a vowel-like character in your method. Jan 9 at 18:49
• This is why I asked to make it obvious - English only has 5, German has 5, but Y is a consonant and there are special vowel-esque "Umlaute & Zwielaute" (äöü, eu, ei, au..) that are treated as vowels but are technically not. Jan 9 at 19:00

## Letter dice are a thing.

Save yourself a lot of time and effort. Often used for language skills but there are lots of uses. You can get them fairly easy and cheaply.

30 sided alphabet dice will give you every letter. (~40 bucks for 12 last time I bought some)

20 sided alphabet dice will cover everything but Q, U, V, X, Y or Z

You can even buy blank d20's and fill in your own letters.

I do recommend getting a few vowel only dice (d6's) just because in my experience you don't end up with many vowels.

You can even get 60 sided letter dice that will give you more of common letters giving an easier time forming words.

• I hadn't been able to find any apart from d20 with missing letters (which we mimic with a normal d20 and a lookup table) so it's good to know they exist Jan 10 at 6:31
• @ChrisH You can find them on amazon just search "alphabet dice".
– John
Jan 10 at 21:49
• I only found d20s and Boggle type (sets of d6s to generate common words) when I looked (amazon UK still fails, with or without "d30" or "30" - even the ones with extra German letters are out of stock). Of course given their algorithms tge product I want is possibly buried somewhere Jan 11 at 7:03
• the 30 sided are made by Koplow games, or Deluxe games and toys, if you want to search outside amazon. that may make it easier, I am in the US so it might be a US only thing. but there are lots of version so I hope not.
– John
Jan 11 at 18:42
• @ChrisH i did find a UK availability outside amazon. thetrainingshop.co.uk/alphabet-dice
– John
Jan 11 at 18:49

I like some of the other answers, but for pure simplicity in use with 10 year olds, you can get an almost flat distribution by doubling 26 to 52, then going "dang, if only that was 50" and subtracting 2 of the doubled letters. I'll say let's take out Q and Z.

So, roll 2d10 as a 1d100, divide by 2 (round up) to generate a number from 1-50. If the number is 1-26, take that letter of the alphabet. Otherwise subtract 26, we now have a number from 1-24. The only annoying part is the fact that I took out the Q in the middle, so you skip letter Q in your count: q is number 17, so if after subtracting 26 your number is 16 or less, take that corresponding letter. If it is 17-24, add one to it then take that letter.

This only involves 2 dice and gives an almost perfectly flat distribution with only the two "Bad" letters having half the chance of the others. You can adjust which bad letters by changing where you skip things on the numbers 27-50 generated.

• Your answer could be improved with additional supporting information. Please edit to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers in the help center.
– Community Bot
Jan 9 at 19:36
• It would seem simpler to do 1d100÷4, rounding to give 25 values mapped to A-Y. If you roll Q, flip a coin, tails it's Z. I say simpler because the letter<->number mapping is close to normal. Jan 9 at 20:32
• @ChrisH I wanted to stay within the original parameters of less rerolling/dice only and went for the actual simplest method in terms of dice. A single 2d10=1d100 roll was the simplest I could come up with from the dice perspective, and the math wasn't a complicated formula.
– Alan
Jan 9 at 21:52

# (d3-1) * 8 + d10

Roll a d6, with 1-2 counting as 0, 3-4 counting as 1, and 5-6 counting as 2, and multiply the result with 8 (giving you a 0, 8 or 16), then add a d10.

You get exactly 26 outcomes, all but four equally likey. In normal alphabet order, "i", "j", "q" and "r" will be twice as likely as the other values, but you could reorder to put vowels there. No rerolls are needed. The method is quite simple, works with physical dice rolls, and needs just two rolls.

A d4 + a d8 is a slight improvement over 2d6, as it generates the numbers 1-32, so there is a 6/32 instead of 10/36 chance of rerolling.

More explicitly:

• Renumber the d4 as 0-3. Multiply it by 8.

• Add a normal d8

• If the total is over 26, reroll, otherwise 1=A...26=Z.

Alternatively, you could use a d6 + a d4. This could generate the numbers 1-24, so you'd still need to pick 2 letters to exclude.

• I haven't used this, and I wouldn't recommend it for entire names, only initials. It is meant as a direct improvement to the method mentioned in the OP, and there's definitely better methods for generating full names. Jan 9 at 15:42
• What you propose doesn't work as well as rolling a d4 and a d8. the added d8 depends on the range. d4 range 1-8 fo 1, 9-16 for 2, 18-24 for 3, and 25-32 for 4. Re roll anything > 26. That may be what you meant, but it did not come across all that clearly. Jan 9 at 16:19
• It's certainly mathematically better, and gets a +1 from me. A minor downside is we'd need another d4 that could easily be renumbered while d6s are both common and easy to modify (one flat rather than numbers round a point) Jan 9 at 16:22
• @ChrisH If you already have a modified d6, then the d6 + d4 method would work for you. Just multiply the modified d6 by 4. Picking 2 letter to exclude may not be ideal, since fantasy names frequently start with any letter, except maybe X. Jan 9 at 16:40
• @sam_phillips_1628534640 perhaps the wrong fantasy, but Xena Warrior Princess has already come up Jan 9 at 16:41

While it won't give you a perfectly balanced distribution, you could consider rolling a d20. If the result is less than 20, simply map it onto the letter in the natural way. If it is 20, flip a coin. On heads, it is a T, on tails roll a d6 and add the results. It is reasonably close to a fair distribution and simpler than most other methods.

If you aren't bound to dice specifically but want something physical, it is relatively easy to get 26 small index cards, write one letter on each, and then shuffle and draw instead of rolling. Then the distribution would be perfect, assuming adequate shuffling.

Also, if you aren't bound to physical items, there are many electronic options. Anydice's roller can be set to roll any number of d26's for instance, and a custom program is relatively simple.

In python, it could be as simple as:

import random
import string
print(random.choice(string.ascii_uppercase))


Though of course that could be refined to print as many characters as desired and filter results. Many programmable calculators and phone apps also allow this.

# Frame Challenge.

This assumes that the thing you are most interested in is random letter generation, and that dice were just being used as a source of randomness.

## Proposed solution

Introducing hat with a bunch of pieces of paper in it. This is an ancient* method for making random choices for arbitrarily long (or short) lists of values. Often used in raffles.

Hat with a bunch of pieces of paper in it is used by taking a bunch of similar pieces of paper writing the various options and sticking them into a hat then randomly selecting one of the pieces of paper as the 'randomly selected value.'

## How to use

Take a 26 pieces of paper that are approximately the same size and write the letters a-z on them. Stick them into the hat. When you want a randomly chosen letter shake the hat and grab a single piece of paper.

## Science

The distribution, assuming that the pieces of paper are randomly selected each piece of paper has the same chance of being selected as any other piece of paper. This gives a flat distribution.

### Proof,

I don't have any scientific papers to point to... I am sure there are some.

* okay, I don't know how long this has been used, its probably been around for less time then rolling dice.

### Roll a d100.

Associate increasing natural numbers with the related letter: (A,1), (B,2), (C,3), ....

Roll a d100 (usually, a d10 for the units and a d10 for the tens): if the result is lower than 27, take the related letter, otherwise reroll the die until the outcome is less than 27. This generates a uniform distribution1, as depicted in the plot below, generated by considering 100 000 rolls:

The red line depicts the true probability of uniformly getting a letter (1/26).

If rerolling is too boring (and in this case it is...), one may consider the following association:

• A -> 1,2,3
• B -> 4,5,6
• C -> 7,8,9
• ...
• reroll if the outcome is greater than 78

The distribution is still uniform, and each letter has a probability to come up of 1/26.

1 There is, imho, a beautiful mathematical proof of this: I will write it in case it is needed.

• With the mapping onto 1,2,3 etc and rerolling over 78, that's marginally less rerolling than my base 6 equivalent, but not enough to be worth the extra complexity of looking up the mappings Jan 9 at 16:32
• @ChrisH I agree that rerolling is boring: with this method you reroll 4 times less (more or less), and you do not have to do any computation. Jan 9 at 16:45

## d20 + d8 - 1

This suggestion is prioritizing simplicity. You can come up with complex schemes, but those are harder to remember. This aims at little chance of rerolling, hitting all numbers from 1-26, and being simple to explain, with just additon and subtraction. It is not perfecly flat in distribution, trailing off at the ends.

Roll a d20 and d8, add them up and subtract 1. This will give you a number of 1-27. (Alternatively, if subtraction is too complicated a concept, you can treat one of the dice as starting with 0, as you do with your d6).

The only issue it the 0.6% of cases where you roll a 27 -- there is no letter for that. This being a fantasy game, maybe assign an exotic letter to it, like an Umlaut (ä, ü, ö) or a special th-letter, or an apostrophe. A fantasy alphabet could have a lot of unusual letters. Or you reroll, one in 160 times.

There are also free dice apps / rollers for mobile phones, that let you define any kind of die, so you can have a d26 and get a uniform distribution, but I suspect physical rolling is more fun.

• @NautArch: the question is "Is there a better way to map 1-26 onto common dice? (...) Better would mean less chance of rerolling, simpler to explain to her friends, or preferably both. The distribution doesn't have to be perfectly flat". This is doing exactly that. I removed the statement about evenly, that Thomas has such an issue with. Jan 9 at 15:36
• Jan 9 at 18:17

## Scrabble Tiles Would Work Best

If you have Scrabble in your game closet, just nick the tile bag out of it. Forget mapping, and just pick letters out of the bag.

## Or 2d20 -1

2d20-1 yields a number between 1 and 39. After 26, just list the most common letters a second time. No re-rolling, and the overlap just slightly increases the chances of the 12 most common letters.

## Or 1d13 + 1d13-1

2d13 yields a number between 2 and 26, so subtract 1 off of one of the dice to get the alphabet. But at that point you have to roll virtually or find hard to find non-standard polyhedral dice.

## Virtual Dice? Then just use tech to choose.

But if you're going virtual, there a number of other RNG ways of generating random letters from XLS, Anydice, programs to select letter out of a random array, etc. etc. etc.

• how does this differentiate from rpg.stackexchange.com/a/203896/30306? How does 2d20-1 give a flat distribution? How do you make a d13? Jan 10 at 16:55