新手问题 「召唤大神」 关于一道数学题,求解

Vdan · 2017年09月25日 · 最后由 Vdan 回复于 2017年09月25日 · 1339 次阅读

起点数值为 3600,最小变量为 5,变大或者变小的概率各为 50%,请生成这样的数列。例如:3600,3605,3600,3595,3590.....

在此跪谢。

等差数列,变化范围是 1000~7000 加上这个条件

result_arr = []
var = 3600
diff = [5, -5]
while true
  var += diff.shuffle.first
  result_arr.push(var)
end

这不是算法题啊 瞎写的,凑活用,根据你的需要改改

我不知道这个题目有什么实际的意义,反正我是无聊,跑了 185103 次才到达边界条件。。。

def get_array(min_num = 1000, max_num = 7000, add_num = 3600, array = [])
  while (min_num..max_num).to_a.include? add_num
    array << add_num
    add_num += [5, -5].shuffle.first
  end
  array
end
waytohigh 回复

棒棒的,已经解决了,现在默认为 sample 这个方法了。再次感谢。

Vdan 关闭了讨论。 09月25日 20:58
需要 登录 后方可回复, 如果你还没有账号请 注册新账号