C# 如何规划“机会”?
我有一个想法,但我不知道怎么做:D 基本上就像在游戏中一样,每6小时你可以打开一个箱子,在那里你可以免费抓取一些物品。现在我想有一个箱子,用户可以每6小时打开一次,我在mysql服务器中编写了每个项目,每个项目都给用户提供经验点。但是怎么做呢? 假设数据库有15个项目,例如,现在每个项目都有其机会值 什么都不做=得到它的75% 剑_1=获得它的15% 剑2=获得它的30% 知道怎么做吗 定义%的范围以获取项目 示例-剑1=0-15%,剑2=15-45% 请注意,上面的数字加起来不等于100%,因此,除非您确实希望返回多次,否则有时。。上述范围不考虑任何结果。 如果你想在一次掷骰中获得多个奖励,只需相应地调整范围即可 生成一个介于0和100之间的随机数。对于生成数量在范围内的项目,这些是您在该回合中赢得的奖励C# 如何规划“机会”?,c#,mysql,C#,Mysql,我有一个想法,但我不知道怎么做:D 基本上就像在游戏中一样,每6小时你可以打开一个箱子,在那里你可以免费抓取一些物品。现在我想有一个箱子,用户可以每6小时打开一次,我在mysql服务器中编写了每个项目,每个项目都给用户提供经验点。但是怎么做呢? 假设数据库有15个项目,例如,现在每个项目都有其机会值 什么都不做=得到它的75% 剑_1=获得它的15% 剑2=获得它的30% 知道怎么做吗 定义%的范围以获取项目 示例-剑1=0-15%,剑2=15-45% 请注意,上面的数字加起来不等于100%,因
您可以为表中的每个项目分配一个数值,获得该数值的百分比将是该数值与其下一个最低数值之间的差值
Nothing, 60 (60% chance)
sword_1, 70 (10% chance)
sword_2, 100 (30% chance)
确保您的最大物品数为100
然后,您可以使用随机数从该表中进行选择:
SELECT * FROM ChestItems WHERE ChanceValue < FLOOR(RAND() * 100) ORDER BY ChanceValue DESC LIMIT 1;
有几种更好的方法可以做到这一点。这只是一个简单的例子。Tons:查找加权分布,您将找到许多解决此问题的方法。