Java AB或BA,但干燥

Java AB或BA,但干燥,java,Java,实验中的偏见是需要解决的一个重要因素。想象一个机器人移液管系统处理两种不同类型的样本:a;并且,B.机器人可以重复相同的过程,将相同的样品放置在相同的位置: A B A B A B A B ... 但这样做可能会引入环境偏见;为了避免这种偏差,机器人可以将样本A随机放置在左侧或右侧位置: B A B A A B B A A B A B ... 类似地,为了避免程序结构偏差,一种常见模式是随机选择任务顺序,例如,对于任务a和B,我们可以写: if (0.5 < Math.random()

实验中的偏见是需要解决的一个重要因素。想象一个机器人移液管系统处理两种不同类型的样本:a;并且,B.机器人可以重复相同的过程,将相同的样品放置在相同的位置:

A B
A B
A B
A B
...
但这样做可能会引入环境偏见;为了避免这种偏差,机器人可以将样本A随机放置在左侧或右侧位置:

B A
B A
A B
B A
A B
A B
...
类似地,为了避免程序结构偏差,一种常见模式是随机选择任务顺序,例如,对于任务a和B,我们可以写:

if (0.5 < Math.random()) {
    doA(); doB();
} else {
    doB(); doA();
}

这是必要的,潮湿的,丑陋的;而且,它不可伸缩。有没有更好的方法可以避免基于任务执行的程序结构偏差?

使用任务的无序集合:

List<Task> tasks = createTaskList();
Collections.shuffle(tasks);
tasks.forEach(Task::do);

它是声明性的、枯燥的,并且可以扩展。

为什么不能抽象任务。在没有列表或无序排列的情况下,从doA和doB执行任务?还有,为什么不使用ExecutorService?@ElliottFrisch我不确定你的建议。executor可以并行计算,但这不是这个问题的重点。在你的问题中,任务::do在哪里?任务是doA和doB的抽象,带有一个共同的do…DOWN投票者-我很高兴澄清这个问题和/或帮助您理解,但我需要的不仅仅是-1-