每个NFT文件稀有度计算
其实权重,有两种方案,一种是人为增加,可以在文件命名时增加权重比如增加50%;第二种就是这个目录下大家都是一样,就要看这个部件在这一批NFT中出现的概率,比如我们创建144个,这个bluehair出现48次,那他的权重就是1/48/144相当于3;接着依次计算coat,eyebrow,face,bg等内容算出来3+3+4+2+1=13(1表示 ,每个都有,2表示每两个就有一个,3表示三个中就有一个是这个部件);另外一个是6+12+24+1+12=55;
原则上数字越大越稀缺;
foreach (var metadata in metadataList)
{
rarityTotal = 0;
foreach (var attribute in metadata.Attributes)
{
var traitCountsForAttribute = traitCounts.Where(t => t.Key == attribute.Layer).FirstOrDefault().Value;
double attributeRarity = 1 / (double)(traitCountsForAttribute[attribute.Value] / (double)collectionSize);
rarityTotal += attributeRarity;
}
rarities.Add(new RarityData
{
Id = metadata.Id,
Rarity = rarityTotal,
});
}
网友评论