lua table操作、运算第一次随机取1至9中的4个,第二次随机取剩下的5个中的3个,第三次再取与第二次不重复的4个,以此类推.

来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/26 04:47:39
luatable操作、运算第一次随机取1至9中的4个,第二次随机取剩下的5个中的3个,第三次再取与第二次不重复的4个,以此类推.luatable操作、运算第一次随机取1至9中的4个,第二次随机取剩下的

lua table操作、运算第一次随机取1至9中的4个,第二次随机取剩下的5个中的3个,第三次再取与第二次不重复的4个,以此类推.
lua table操作、运算
第一次随机取1至9中的4个,第二次随机取剩下的5个中的3个,第三次再取与第二次不重复的4个,以此类推.

lua table操作、运算第一次随机取1至9中的4个,第二次随机取剩下的5个中的3个,第三次再取与第二次不重复的4个,以此类推.

你是说 第三次 再取 和 第一次 不重复的 4个


----------------------------------------
-- func
----------------------------------------

function init_array(n, start)
    start = start or 1
    local arr = {}
    for i = start, n do
        arr[i] = i
    end
    return arr, #arr
end

-- 返回从数组随机抽取的集合
function get_array_randpick(arr, n)
    local a = {}
    for key, var in pairs(arr) do
        a[key] = var
    end

    local t = {}
    local max = #a
    for i = 1, n do
        local x = math.random(1, max)
        table.insert(t, a[x])
        a[x] = a[max]
        a[max] = nil
        max = max - 1
    end
    return t, a
end

--- 计算两个数组的差异
-- @return 数组1中与数组2不相同的元素, 相同的元素 
function get_array_diff(arr, arr_other)
    assert(type(arr) == "table" and type(arr_other) == "table")
    local ht_other = {}
    for i, unit in ipairs(arr_other) do
        ht_other[unit] = true
    end

    local t_diff = {}
    local t_same = {}
    
    for i, unit in ipairs(arr) do
        if ht_other[unit] then     
            table.insert(t_same, unit)
        else
            table.insert(t_diff, unit)
        end
    end
    return t_diff, t_same
end

function print_arr(arr, name)
    name = name or "aArray"
    print(name.." = {") 
    for i, var in ipairs(arr) do
        print(string.format("  [%d] = %s", i, tostring(var)))
    end
    print "}"
end

----------------------------------------
-- test
----------------------------------------

local curtime = os.time() 
math.randomseed(curtime)
math.random()

----------------------------------------
-- main
----------------------------------------

local function main()
    local arr_org, len = init_array(9)
    local arr_next = arr_org 
    local arr_last_pick = {}
    
    local loop_max_times = 1000
    
    for i = 1, loop_max_times do
        local arr_pick1, arr_other1 = get_array_randpick(arr_next, 4)
        arr_next = get_array_diff(arr_org, arr_pick1)
        local arr_pick2, arr_other2 = get_array_randpick(arr_next, 3)
        
        if i < 10 then
            print_arr(arr_pick1, string.format("loop[%d].pick1 = ", i))
            print_arr(arr_pick2, string.format("loop[%d].pick2 = ", i))
        end
        
        
        local _, t_same = get_array_diff(arr_pick1, arr_pick2)
        assert(#t_same == 0)
        local _, t_same = get_array_diff(arr_pick1, arr_last_pick)
        assert(#t_same == 0)
    
        arr_last_pick = arr_pick1
    end
    
    print("\nok")
end

main()


lua table操作、运算第一次随机取1至9中的4个,第二次随机取剩下的5个中的3个,第三次再取与第二次不重复的4个,以此类推. 求LUA中的table都有哪些 初学lua,---问题出在哪?lua:tabledemo.lua:25:--attempt to index global 'a' (a number value)源代码是这样的:a={}-- empty table-- create 1000 new entriesfor i=1,1000 do a=i*2 endprint(a[9])在editplus中运行的就出现了lua:tabledemo.l lua 不重复随机数算法 比如1-7 取7次 每次不能重复 什么是三元运算操作 如何定义一个变量,让该变量去随机值.定义一个变量,该变量取随机值,不要求其它运算. 怎么运行LUA文件 盒中有三个新球,一个旧球,第一次随机取一个,用后放回,第二次用时随机取两个,事件A表示“第二次取到的全是新球”,则求P(A) 易语言随机取数问题?y = 取随机数 (1,100),第二次随机数大于第一次随机数时提示,小于不提示呢? 盒中有3个新球,1个旧球,第一次使用时从中随机取一个,用后放回第二次用时从中随机区两个,事件A表示“第次取到的全是新球”求P(A).二次取到的全是新球”求P(A) 盒中有3个新球 1个旧球 第一次随机抽一个 用后放回 第二次随机抽两个 事件A表示“第二次取到的全”盒中有3个新球 1个旧球 第一次随机抽一个 用后放回 第二次随机抽两个 事件A表示“第二 lua中 table.getn(t) 、#t、 table.maxn(t) 这三个什么区别?求高人指导.RTlocal t = {1,888,x= 999,b=2,5,nil,6,7,[10]=1,8,{z = 1,y = 1},nil,nil}print(table.getn(t))print(#t)print(table.maxn(t))输出:8 8 8------------如果把[10] =1 改 excel表格的基本操作中的运算 计算器能不能取余数 (mod运算)?怎么操作?大概就是这样的计算器能不能推荐个能算的,给我个网址.最好能尽量便宜. 求用LUA建一个颜色取值表,可以通过改变一个外设的变量取值不同而选择不同的颜色.例如:变量X=a,N就取红色.变量X2=b,N2就取蓝色. table table table