Database 有好的姓氏数据库吗?
我希望生成一些数据库测试数据,特别是包含人名的表列。为了更好地说明基于名称的搜索的索引工作情况,我希望尽可能接近真实世界的名称及其真实频率分布,例如,许多不同的名称,其频率分布在某些幂律分布上 理想情况下,我正在寻找一个免费可用的数据文件,每个文件名后跟一个单一的频率值(或等效的概率)Database 有好的姓氏数据库吗?,database,testing,test-data,Database,Testing,Test Data,我希望生成一些数据库测试数据,特别是包含人名的表列。为了更好地说明基于名称的搜索的索引工作情况,我希望尽可能接近真实世界的名称及其真实频率分布,例如,许多不同的名称,其频率分布在某些幂律分布上 理想情况下,我正在寻找一个免费可用的数据文件,每个文件名后跟一个单一的频率值(或等效的概率) 基于盎格鲁-撒克逊人的名字就可以了,尽管来自其他文化的名字也很有用。牛津大学在其公共FTP站点上提供了压缩的.gz文件中的单词列表。我找到了一些符合要求的美国人口普查数据。唯一需要注意的是,它只列出至少出现100
基于盎格鲁-撒克逊人的名字就可以了,尽管来自其他文化的名字也很有用。牛津大学在其公共FTP站点上提供了压缩的.gz文件中的单词列表。我找到了一些符合要求的美国人口普查数据。唯一需要注意的是,它只列出至少出现100次的名称
struct name条目
{
公共字符串\u名称;
公共国际频率;
}
int _frequencyTotal;//预先计算这个。
公共字符串SampleName(NameEntry[]nameEntryArr,随机rng)
{
//掷轮盘赌球。
int throwValue=rng.NextDouble()*frequencyTotal;
int累加器=0.0;
对于(inti=0;i您还可以查看jFairy项目。它是用Java编写的,会生成假数据(例如名称)
谷歌的第一个热门话题:@PengOne我不认为你可以下载他们的数据集,但是,它的名字来源不是频率。@Rup:我没怎么看它,所以为什么它是一个评论而不是答案。我想它可能是一个开始寻找的地方。谢谢。那里没有频率数据,但我可以从一个给定的列表中用适当的分布进行采样n以提供更真实的测试数据。尽管事后看来,在累积频率列表上使用二进制搜索方法更有效。或者对于固定数量的样本,您可以使用随机通用抽样()此答案中的链接不再有效。1990年名称数据可用:
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.");
}
Fairy fairy = Fairy.create();
Person person = fairy.person();
System.out.println(person.firstName()); // Chloe
System.out.println(person.lastName()); // Barker
System.out.println(person.fullName()); // Chloe Barker