【问题标题】:Universal algorithm for generating properities生成属性的通用算法
【发布时间】:2018-01-30 22:18:48
【问题描述】:

我需要制定算法,采用随机唯一字符串(散列等)并从预配对列表中生成多个随机属性。

示例:[猫算法]

color: white,black,brown
eye-color: blue, green, brown
size: 10,20,30

function algorithm(random_unique_hash){
   ...magic...
   return [color, eye-color, size]
}

返回的猫对她的字符串来说绝对是独一无二的。 字符串在整个字符串列表中是唯一的。 每只猫都必须不同。 我需要能够从属性再次进行哈希。

这可能吗?或者它需要以不同的方式工作?我需要制作 cat 然后制作唯一的校验和吗?

从哪里开始?

【问题讨论】:

    标签: algorithm hash checksum


    【解决方案1】:

    您有三种颜色、三种眼睛颜色和三种尺寸。这意味着您可以制作 3*3*3=27 种不同的猫。所以random_unique_hash 应该只是一个从 0 到 26 的数字。

    要从哈希中获取属性,请使用除法和模运算符将哈希分解为索引,例如

    index1 = random_unique_hash % 3
    index2 = (random_unique_hash / 3) % 3
    index3 = random_unique_hash / 9
    

    然后可以使用索引来访问每个属性列表中的正确条目。

    要从属性中获取哈希,您需要找到属性的索引。然后结合所有索引重新创建哈希,像这样

    random_unique_hash = index3 * 9 + index2 * 3 + index1
    

    【讨论】:

    • 对不起,我没有搜索这个特定的类型。我正在寻找一种方法,使我可以从许多具有许多选项的列表中获得数百万种可能的组合。这只是一个例子。
    • @EmaMaMasoEmaSeMa 是的,但我希望您能够很好地理解这个示例,以便您能够将这个概念扩展到具有更多选项的更多列表。单个 32 位散列允许数十亿种可能的组合。您将散列分解为具有除法和模运算的索引。您可以使用乘法从索引中重新组合散列。
    • 我明白,但我需要实现类似 www.cryptokitties.co 的东西,用于他们的猫生成。你的例子是制作这样的系统的好方法吗?
    • 只要属性正交,系统就可以工作。例如,只要每种眼睛颜色都可以与每种身体颜色一起使用,那么它就可以工作。如果属性之间存在相互作用,例如蓝眼睛不适用于棕色身体,那么事情就会变得复杂。
    猜你喜欢
    • 2021-10-10
    • 1970-01-01
    • 1970-01-01
    • 2017-02-10
    • 1970-01-01
    • 2017-07-21
    • 2020-12-20
    • 2010-10-02
    • 1970-01-01
    相关资源
    最近更新 更多