首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >随机排列一些州不合法的名单?

随机排列一些州不合法的名单?
EN

Software Engineering用户
提问于 2017-03-03 17:04:04
回答 3查看 219关注 0票数 1

我想做一个随机的项目在游戏中拉-穆拉纳。然而,一些项目的安排将意味着游戏无法完成。有时只有一组物品需要通过障碍,而另一些时候,有多组物品可以通过一个障碍。

例如,要到达出生室,你需要有羽毛,格斗爪,爱马仕靴和飞机模型,或者有Isis吊坠和爱马仕靴,或者杀死第五个老板,并拥有飞机模型。这意味着,任何将爱马仕靴和飞机模型放置在出生室的东西都使游戏无法完成。

实际上,我试图按随机顺序排列一个列表,其中一些项目永远不可能在一个索引范围内,而一些项目只有在另一个索引范围内时才能在一个索引范围内。有比拒绝和重新生成非法配置更好的方法吗?

EN

回答 3

Software Engineering用户

发布于 2017-03-03 19:08:22

有时,生成有效配置的最佳方法是做出有效的配置并逐步构建更大的配置。

我对拉-穆拉娜不熟悉。我第一次听到这个消息是在六十秒钟前,当时我正在读你的问题。我将假设这些位置是线性访问的,但是我们也许可以推广下面的算法。

假设位置为A、B、C等,对于每个X位置,我们知道它需要项X1、X2等.:

  1. 把所有的物品放在A的位置(比方说)
  2. 对于下一个位置,计算前一个位置中可以移动到它的任何项(即在当前位置之前不需要的项目)。在此位置和以前的位置之间随机分配这些项。(随机可能意味着“平衡水平”、“完全随机”等等)
  3. 重复(2),直到你到达最后一个位置

根据La-Mulana的具体情况,需要对上述算法进行调整.

票数 2
EN

Software Engineering用户

发布于 2017-03-03 18:06:38

这里可能工作的一种方法是创建从整数到合法配置的映射。也就是说,0将是第一个合法配置,1将是第二个合法配置。这只是一个简单的问题,在一个范围内生成一个随机数,并将其扩展到合法的配置。

当然,从数字映射到配置的函数就是诀窍。我不熟悉游戏规则,所以我不清楚这是一个可能的解决方案,或者它是否值得付出努力。这在很大程度上取决于使用蛮力方法生成非法配置的可能性。如果你对问题的形式提供了更多的细节,接下来应该有更多的具体建议。

票数 0
EN

Software Engineering用户

发布于 2021-12-06 00:42:11

一种遗传编程方法可能会奏效。

  1. 选择评分函数。(一个简单的分数可能是约束失败的次数;您可能会给出更困难的约束,以满足更高的值。)
  2. 产生一系列随机排列。
  3. 选择得分最低的排列。
  4. 如果那个分数是零,就停下。你有个可解的游戏。
  5. 创建一些你的排列的“突变”。例如,复制50份,然后在每份拷贝上,随机交换1-3份。
  6. 进入第三步。
票数 -2
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/343416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档