database - 有什么好的姓氏数据库吗?

标签 database testing test-data

我希望生成一些数据库测试数据,特别是包含人名的表列。为了更好地了解索引在基于名称的搜索方面的效果如何,我想尽可能接近真实世界的名称及其真实频率分布,例如许多不同的名字,其频率分布在某种幂律分布上。

理想情况下,我正在寻找一个免费提供的数据文件,其中的名称后跟每个名称的单个频率值(或等效的概率)。

基于盎格鲁撒克逊人的名字会很好,尽管来自其他文化的名字也很有用。

最佳答案

我找到了一些符合要求的美国人口普查数据。唯一需要注意的是,它只列出至少出现 100 次的名称...

通过此博客条目找到,该条目还显示了幂律分布曲线

除此之外,您还可以使用轮盘选择从列表中采样,例如(未测试)

struct NameEntry
{
    public string _name;
    public int _frequency;
}

int _frequencyTotal; // Precalculate this.


public string SampleName(NameEntry[] nameEntryArr, Random rng)
{
    // Throw the roulette ball.
    int throwValue = rng.NextDouble() * frequencyTotal;
    int accumulator = 0.0;

    for(int i=0; i<nameEntryArr.Length; i++)
    {
        accumulator += nameEntryArr[i]._frequency;
        if(throwValue <= accumulator) {
            return nameEntryArr[i]._name;
        }
    }

    // If we get here then we have an array of zero fequencies.
    throw new ApplicationException("Invalid operation. No non-zero frequencies to select.");
}

关于database - 有什么好的姓氏数据库吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6332119/

相关文章:

mysql - 密码重置 token 是否应位于用户表之外的单独表中?

ruby-on-rails - 如果您不知道所有 WITH 值,如何使用 Rspec any_instance_of

xml - 如何从他们的 DTD 或 XSD 生成示例 XML 文档?

java - 傻瓜数据库

database - 查找数据库源

testing - 通过记录和回放方法的调用方式自动生成测试

c# - nBuilder 测试数据生成器和反射

facebook - 是否可以在测试应用之间共享 Facebook 测试用户?

mysql - 如何在映射表中显示用户的名称而不是 ID?

java - 使用 Selenium WebDriver 获取 Firebug 控制台输出