我想弄清楚一种方法,我可以用它来建立一个系统,将权重分配给表中的独立对象进行随机加权排序 - 基于该项目的重要性。例如,如果一个比例是0-9。如果您分配了三个项目3,5,9,1,那么系统将能够对这些数字进行排序,并构建列表,以便在四个对象之间每个权重总计为1。你将如何去分拣这些物品?如何动态分配基于项目重要性的权重?
目前,这是我对SQL:
CREATE TABLE IF NOT EXISTS `block_types` (
`ID` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`BlockTypeUID` varchar(35),
`Name` varchar(20),
`Weight` float,
`Turns` int(11),
`Score` int(11),
`Hitpoints` int(20),
`Rarity` int(11),
`Multiplier` int(1),
`Effect` int(11),
`Area` int(11),
PRIMARY KEY (`ID`)
) DEFAULT COLLATE=utf8_general_ci;
重量是浮动0.0001至1,并在那一刻,我基本上都是通过一个简单的输入表单手动分配它。这个想法是,Rarity会处理存储0-9,并被用于根据所有其他条目自动计算新的权重 - 以便该表的总和等于1.
从数据库返回值时不能使用'ORDER BY Weight(asc | desc)'?你从数据库返回的对象是否需要某种相对值,这就是为什么你希望表的总和为1的原因? – 2014-09-27 13:55:49