我有一个生成两个数字的函数。该函数具有一个循环来保持生成数字,直到找到两个其乘积平均为24的数字为止。这通常可以奏效,但偶尔会失败。



function randomBetween(min, max) {
  var ceiling = max + 1;
  return Math.floor(Math.random() * (ceiling - min)) + min;
}


function DOBINGenerateNonWhole() {
  var random;
  var random2;

  do {
    random = randomBetween(3, 36);
    random2 = randomBetween(3, 36);

  } while ((24 % (random * random2) != 0));
  return {
    random: random,
    random2: random2,

  }
}

var Span1 = DOBINGenerateNonWhole().random;
$('.Span1').html(Span1);

var Span2 = DOBINGenerateNonWhole().random2;
$('.Span2').html(Span2);

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="Span1"></div>
<div class="Span2"></div>

最佳答案

您正在运行DOBINGenerateNonWhole()两次,这是导致问题的原因。 randomrandom2不是来自同一调用,因此没有理由将其乘积乘以24

如果您更新代码以存储结果,则它应该可以工作:

var result = DOBINGenerateNonWhole();
$('.Span1').html(result.random);
$('.Span2').html(result.random2);

09-25 19:37