【问题标题】:Is there a better solution for this?有没有更好的解决方案?
【发布时间】:2015-02-04 12:30:54
【问题描述】:

我确信应该有一种更有创意的方法来解决这个问题……有人感兴趣吗?

问:给定以下代码,确定“a”的可能值范围:

  x = random_int(1,6)

  y = random_int(1,6)

  z = random_int(1,6)

  a = x + y + z

我的回答:

var x, y, z, a;
var range = [];
for (var i = 0; i < 1000; i++) {
  x = Math.floor(Math.random() * 6) + 1;
  y = Math.floor(Math.random() * 6) + 1;
  z = Math.floor(Math.random() * 6) + 1;
  a = x + y + z;
  range.push(a);
}
var min = Math.min.apply(null, range),
    max = Math.max.apply(null, range);

document.write("The range is between " + min + " and " + max);

【问题讨论】:

  • 好吧,我看不出最小值与 3 有何不同。你到底想做什么。
  • 伪代码在哪里?
  • 我正在寻找一种算法来解决它。显然我知道答案!
  • 解决什么。据我所知,最小的 3*1 和最大的 3*6,尽管如果你做的次数足够多,你可能会得到少于 18 个。
  • 给定代码意味着给定范围。结果范围只是 (sum mimima(ranges)..sum maxima(ranges)。你想在这里问什么?

标签: javascript algorithm mathematical-optimization


【解决方案1】:

这是所有代码:

document.write("The range is between 3 and 18");

因为最小值是所有随机数都为 1 的时候,所以它会是

x = min(random_int(1,6)) = 1
y = min(random_int(1,6)) = 1
z = min(random_int(1,6)) = 1

所以

a = 1 + 1 + 1 = 3

最大值将是这样的:

x = max(random_int(1,6)) = 6
y = max(random_int(1,6)) = 6
z = max(random_int(1,6)) = 6

所以

a = 6 + 6 + 6 = 18

【讨论】:

    猜你喜欢
    • 2021-08-24
    • 2013-10-22
    • 1970-01-01
    • 2021-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-29
    相关资源
    最近更新 更多