**Consulting the Shen Shu**

The *Shen Shu* (“divine numbers,” “spirit calculations”) is a minor divination system with unclear origins that has fairly recently made its way from China to the west. It consists of 384 oracle texts, probably not coincidentally the same as the number of lines in the *I Ching* (64 × 6); but it has little other resemblance to the latter. It was originally consulted by counting the number of strokes in three Chinese characters, a method that does not translate well to western alphabets. An alternative method is to use coins numbered 0-9 (a ten-sided die would also work) to generate a number between 000 and 999; 384 is subtracted from the result as long as it is greater than this value.

One problem with this method is that the numbers 1-231 are 50% more likely than the rest, because there are three ways to obtain them (including coin results 769-999, with 384 subtracted twice). And one has to decide what to do with 000. Presented here is a method that selects from the oracle texts with equal probability.

384 is 600 in base 8.
So to consult the oracle, we can throw one 6-sided die numbered 0-5 and two 8-sided dice numbered 0-7 to get a number between 0-577 in base 8, add 1 to the result to make it 1-600, then convert to base 10 to get 1-384.
(It is equivalent to throwing two 8-sided dice to choose an *I Ching* hexagram, then one 6-sided die to choose a line.)
One could also use 6 then 8 numbered coins instead of dice. The base 10 conversion and the addition of 1 could be omitted by numbering the oracle texts in base 8 from 0-577.

See Lost (and Found) in Translation, a review article by Steve Moore on Steve Marshall’s site, for a detailed analysis of the oracle and its publication history. (“I actually feel a little sorry for what’s happened to a rather cute little Chinese divination system, now that it’s fallen into the hands of rapacious western barbarians.”)

And see “Shén Shù,” the Spirit Numbers of Zhuge Liang on LiSe Heyboer’s site for an English translation of the text and further information.

Here is a script that allows you to throw virtual dice by selecting from randomly-arranged numbers. Select one number from each row by clicking a die. Clicking __reset__ re-randomizes the numbers.

If you would still rather use coins, here you go: