【发布时间】:2014-09-27 13:39:30
【问题描述】:
我正在尝试找出一种方法,我可以使用它来构建一个系统,该系统将根据该项目的重要性为表中的独立对象分配权重以进行随机加权排序。例如,如果比例为 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?