Я хотел бы создать случайное логическое значение в JavaScript, но я хочу принять во внимание предыдущее значение. Если предыдущее значение было истинным, я хочу, чтобы следующее значение было более вероятным. На данный момент у меня есть это (это в контексте замыкания - goUp
и lastGoUp
являются локальными для вмещающей области):
function setGoUp() {
goUp = getRandomBoolean();
if(lastGoUp) {
goUp = getRandomBoolean() || goUp;
}
else {
goUp = getRandomBoolean() && goUp;
}
lastGoUp = goUp;
}
Итак, алгоритм идет:
Если случайное логическое значение из предыдущего вызова было True:
a) получить другое случайное логическое значение, и или
эти два вместе
b) еще получают другое случайное логическое значение и и
это вместе.
Я уверен, что этот алгоритм можно упростить. Я задавался вопросом:
if(lastGoUp && goUp) {
goUp = goUp * (getRandomBoolean() || goUp);
}
, но это кажется очень грязным.
Есть также проблема с этим алгоритмом, который означает, что я могу только удвоить шанс получить тот же логический код снова - я не могу легко его настроить. Есть идеи?