2

这是我到目前为止所拥有的,但似乎每次我尝试运行它时,它都会关闭。

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

这就是完整的上下文。

4

2 回答 2

8

该代码存在一些问题,第一个问题(正如 Lorenzo Donati 指出的那样)是您将实际调用包装在random().

第二个是你调用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 块,因此:

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)
于 2013-08-24T03:17:17.637 回答
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)
于 2013-08-23T22:34:08.187 回答