今天早上我写了关于教皇和国王名字的频率的文章。这涉及到用罗马数字对字符串进行排序,因为教皇和国王的名字后面带有罗马数字是很常见的。
令我惊讶的是,按字母顺序对罗马数字进行排序会大致按数字顺序对它们进行排序,尤其是对于小数字。它并不完美。例如,按字母顺序,IX 位于 V 之前。
每个对数据做过大量工作的人都会遇到一列数字按字母顺序而不是数字顺序排序的问题。例如,“10”位于“1”和“2”之间,尽管 10 位于 1 和 2 之后。
因此,您不能将数字(罗马数字或阿拉伯数字)作为字符串进行排序并期望它们按数字顺序显示。但是,当您对小数字进行排序时,罗马数字会很接近,例如,I 到 XXIII 代表名为约翰的教皇,I 到 VIII 代表名为亨利的英格兰国王。
为了说明这一点,我绘制了字符串排序顺序与罗马数字和阿拉伯数字的数字顺序的相关性,对于序列 1 … n ,增加n的值。我使用斯皮尔曼的排序相关性来测量相关性。我也尝试了肯德尔的 tau 蛋白,并得到了类似的结果。
直到 XXXVIII,罗马数字的字母顺序和数字顺序都非常一致,只有几个数字不合适,即 IX、XIX 和 XXIX。但是,当 10 到 19 之间的所有数字都在 2 之前时,阿拉伯数字的字母顺序和数字顺序会有很大差异。
当您进一步了解时,两种书写系统的字母顺序和数字顺序有所不同,尤其是罗马数字。
罗马数字排序一文首先出现在John D. Cook上。
原文: https://www.johndcook.com/blog/2025/05/09/sorting-roman-numerals/