Scala使用排列列表进行统一交叉操作的最佳方法?
我搜索在 Scala 中使 GA 交叉运算符起作用的最佳和最优雅的方法(没有“for”循环,如果可能的话只有不可变类型),例如,使用以下列表:
val A = IndexedSeq (5,4,8)
val B = IndexedSeq (3,2,6)
我想进行随机比特币排列(使用 rng.nextBoolean
例如)在 IndexedSeq 中的每个元素之间,最后在元素排列后得到两个列表 A' 和 B'。
执行示例:
rng.nextBoolean <- (true,false,true)
A' = 3,4,6
B' = 5,2,8
谢谢。
I search the best and the most elegant way to make GA crossover operator in Scala functional (No "for" loop, with only immutable type if possible), for example, with this list:
val A = IndexedSeq (5,4,8)
val B = IndexedSeq (3,2,6)
I want to make random bitcoin permutation (with rng.nextBoolean
for example) between each element in my IndexedSeq, and finally I get the two lists A' and B' after permutation of their elements.
Example of execution:
rng.nextBoolean <- (true,false,true)
A' = 3,4,6
B' = 5,2,8
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
使用布尔值作为第三个参数:
如果您希望使用默认的布尔值序列,则可以提供如下默认参数:
Use with Booleans as third argument:
If you want it with a default sequence of Booleans, you could provide a default argument like this:
哇,这些代码从哪里来?这儿:
那儿,就这些了。
如果您已经有一个随机布尔值列表,您可以这样做:
Wow, where's all this code coming from? Here:
There, that's all.
If you already have a list of random booleans, you can do this:
如果经常这样做的话,每次都初始化 util.Random 当然不是很聪明。因此,对于生产代码,您需要重新排列代码。
如果你不将输入限制为 2 个序列,它会变得更有趣。我们开始吧:
当然,第二个解决方案也可以用于 2 个序列。
Initializing util.Random each time is of course not very clever, if done frequently. So for production code you would rearrange the code.
If you don't restrict the input to 2 sequences, it get's more interesting. Here we go:
The second solution can, of course, be used for 2 sequences as well.