Lua-从一个范围(或表)中选择一个随机值,但不包括一个(或另一个)表的值

Krackout

范围1, 2, 3, 4, 5, 6, 7, 8(如果更容易则可以填充Lua表)
table = {1, 4, 3}

可能的随机选择应在之中2, 5, 6, 7, 8

在Python中,我用它来获取它:

possibleChoices = random.choice([i for i in range(9) if i not in table])

任何想法如何在Lua中实现相同?

荒谬的

Lua有一个非常小的库,因此您必须编写自己的函数来执行某些任务,这些任务会自动以许多其他语言提供。

解决此问题的一种好方法是编写一些可以解决部分问题的小函数,并将其合并到最终解决方案中。在这里,最好有一个数字范围,其中不包括某些数字,从中随机画出一个数字。范围可以通过使用以下range函数获得

-- Returns a sequence containing the range [a, b].
function range (a, b)
  local r = {}
  for i = a, b do
    r[#r + 1] = i
  end
  return r
end

为了得到一个不包含某些数字的序列,seq_diff可以编写一个函数。这个版本使用了一个member功能:

-- Returns true if x is a value in the table t.
function member (x, t)
  for k, v in pairs(t) do
    if v == x then
      return true
    end
  end
  return false
end

-- Returns the sequence u - v.
function seq_diff (u, v)
  local result = {}
  for _, x in ipairs(u) do
    if not member(x, v) then
      result[#result + 1] = x
    end
  end
  return result
end

最后,这些较小的功能可以组合为一个解决方案:

-- Returns a random number from the range [a, b],
-- excluding numbers in the sequence seq.
function random_from_diff_range (a, b, seq)
  local selections = seq_diff(range(a, b), seq)
  return selections[math.random(#selections)]
end

样本互动:

> for i = 1, 20 do
>> print(random_from_diff_range(1, 8, {1, 4, 3}))
>> end
8
6
8
5
5
8
6
7
8
5
2
5
5
7
2
8
7
2
6
5

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

LUA:使用另一个文件中的表

来自分类Dev

基于另一个对值进行计数,并通过嵌套表进行迭代-LUA

来自分类Dev

Lua:如何将一行从一个表复制到另一个表?

来自分类Dev

Lua:如何将一行从一个表复制到另一个表?

来自分类Dev

lua嵌套表将表插入另一个表

来自分类Dev

如何让lua加载另一个lua脚本?

来自分类Dev

从lua中另一个表内部的表内部调用函数

来自分类Dev

如何从Lua中的表中随机选择一个对象?

来自分类Dev

如何从Lua中的表中随机选择一个对象?

来自分类Dev

如何在Lua中的表中检索另一个变量?

来自分类Dev

Lua:我如何从另一个班级获得一个班级变量?

来自分类Dev

在lua中将一个字符“翻译”为另一个

来自分类Dev

如何从另一个lua文件加载数据?

来自分类Dev

使用Corona SDK将值保存到Lua中的另一个文档

来自分类Dev

一个循环遍历多个Lua表

来自分类Dev

如何获得Lua中的第一个表值

来自分类Dev

将一个函数放在lua的另一个函数中是否会提高lua的性能?

来自分类Dev

根据另一个表中的引用值从一个表中选择值

来自分类Dev

从lua的一个输入表输出两个表,第一个输出表将具有所有键,第二个将具有输入表的所有值

来自分类Dev

SQL查询以基于另一个表中的列值从一个表中选择

来自分类Dev

如何从一个表中选择一个值,而在另一个表中满足两个单独的条件对

来自分类Dev

努力从另一个表中选择一个值

来自分类Dev

如何使用JOIN从另一个表中选择一个值

来自分类Dev

从一个表中选择另一个不存在的表

来自分类Dev

从一个表中选择,从另一个表中计数

来自分类Dev

根据另一个表的频率从一个表中选择列?

来自分类Dev

格式化解析表$ in的lua表也是一个表

来自分类Dev

./lua/addtest.lua:9:尝试索引本地“ testobj”(一个userdata值)]]

来自分类Dev

Lua在字符串中每4个字符插入一个值

Related 相关文章

  1. 1

    LUA:使用另一个文件中的表

  2. 2

    基于另一个对值进行计数,并通过嵌套表进行迭代-LUA

  3. 3

    Lua:如何将一行从一个表复制到另一个表?

  4. 4

    Lua:如何将一行从一个表复制到另一个表?

  5. 5

    lua嵌套表将表插入另一个表

  6. 6

    如何让lua加载另一个lua脚本?

  7. 7

    从lua中另一个表内部的表内部调用函数

  8. 8

    如何从Lua中的表中随机选择一个对象?

  9. 9

    如何从Lua中的表中随机选择一个对象?

  10. 10

    如何在Lua中的表中检索另一个变量?

  11. 11

    Lua:我如何从另一个班级获得一个班级变量?

  12. 12

    在lua中将一个字符“翻译”为另一个

  13. 13

    如何从另一个lua文件加载数据?

  14. 14

    使用Corona SDK将值保存到Lua中的另一个文档

  15. 15

    一个循环遍历多个Lua表

  16. 16

    如何获得Lua中的第一个表值

  17. 17

    将一个函数放在lua的另一个函数中是否会提高lua的性能?

  18. 18

    根据另一个表中的引用值从一个表中选择值

  19. 19

    从lua的一个输入表输出两个表,第一个输出表将具有所有键,第二个将具有输入表的所有值

  20. 20

    SQL查询以基于另一个表中的列值从一个表中选择

  21. 21

    如何从一个表中选择一个值,而在另一个表中满足两个单独的条件对

  22. 22

    努力从另一个表中选择一个值

  23. 23

    如何使用JOIN从另一个表中选择一个值

  24. 24

    从一个表中选择另一个不存在的表

  25. 25

    从一个表中选择,从另一个表中计数

  26. 26

    根据另一个表的频率从一个表中选择列?

  27. 27

    格式化解析表$ in的lua表也是一个表

  28. 28

    ./lua/addtest.lua:9:尝试索引本地“ testobj”(一个userdata值)]]

  29. 29

    Lua在字符串中每4个字符插入一个值

热门标签

归档