如何 select agents using (randomWhere) from Main

How to select agents using (randomWhere) from Main

我想要的是根据 Main 中的参数随机 select 代理。因此,与其 select 通过其索引 - agent.get(i) 代理 - 我想通过其属性随机 select 代理。

如果这样的事情是可能的,我会很高兴:

agent.get(randomWhere(agent, a -> a.age > 50 && a.health == "good" && ...));

我知道 randomWhere 函数将 return 代理,而不是它的索引。那么是否有可以直接执行此操作的函数?

我想到的解决办法是:

1-列出所有使用过滤功能的代理:

List agentslist = filter( agent, p -> p.p_gender == false && ...);

这会 return 类似 :

[root.agent[1]( p_gender = false,...),root.agent[5]( p_gender = false,...),root.agent[17]( p_gender = false,...)]

2- 我使用 Regex 遍历代理列表,从新列表中的 [ ] 之间获取每个代理的索引。基于此示例,此新列表将具有这些值 [1,5,17] .

3- 最后,我从新列表中随机选择并直接在 agent.get(i) 中输入它的值。

有更好的方法吗?

提前致谢,

要获取索引,只需使用 getIndex() 函数。

int index=randomWhere(yourAgents,a->a.age>50 && a.health.equals("good")).getIndex();
agent.get(index);

记得在比较字符串时使用 equals()...“==”仅对基元有效。