试图在Lua中随机选择

时间:2013-08-23 22:18:33

标签: function random lua

这是我到目前为止所做的,但似乎每当我尝试运行它时,它就会关闭。

function wait(seconds)
  local start = os.time()
  repeat until os.time() > start + seconds
  end

function random(chance)
  if math.random() <= chance then
  print ("yes")
  elseif math.random() > chance then
  print ("no")
  end

random(0.5)
wait(5)
end

这是完整的背景。

2 个答案:

答案 0 :(得分:8)

这个代码存在一些问题,第一个问题(正如Lorenzo Donati指出的那样)是你已经将random()内部的实际调用包装起来,给你一块从未真正做过任何事情的块(woops)。

第二个是你两次调用math.random(),给你两个不同的值;这意味着它完全有可能使两种测试都不成真。

第三种是次要的:你正在进行两次测试 - 或者选择;第一次测试会告诉我们我们需要知道的一切:

function wait(seconds)
    local start = os.time()
    repeat until os.time() > start + seconds
end

function random(chance)
    local r = math.random()
    if r <= chance then
        print ("yes")
    else
        print ("no")
    end
end

random(0.5)
wait(5)

并且只是为了踢,我们可以用条件值替换if-block,因此:

function wait(seconds)
    local start = os.time()
    repeat until os.time() > start + seconds
end

function random(chance)
    local r = math.random()
    print(r<=chance and "yes" or "no")
end

random(0.5)
wait(5)

答案 1 :(得分:3)

可能你打算写这个:

function wait(seconds)
  local start = os.time()
  repeat until os.time() > start + seconds
end

function random(chance)
    if math.random() <= chance then
        print ("yes")
    elseif math.random() > chance then
        print ("no")
    end
end

random(0.5)
wait(5)