2013-04-02 2 views
2

N 값이있는 테이블을 무작위로 채울 수있는 사람이 있습니까? 값이 1, ..., M이면 중복을 허용하지 않습니까?randoming a table 코로나 SDK/루아

건배. 이 당신을 도울 수

+1

그런 다음 질문에 대한 대답은 "예, 그렇게 할 수있는 방법이 있습니다." [faq # dontask] (http://stackoverflow.com/faq#dontask)를 확인하십시오. – hjpotter92

+0

Ive이 (가) 내 질문을 편집했습니다. – Eyeball

+0

관련 항목 : http://stackoverflow.com/q/158716 – finnw

답변

4
local M, N, tNonFinal, tFinal = 500, 20, {}, {} 

math.randomseed(os.time()) 

for i = 1, N, 1 do 
    local iRandom = math.random(1, M) 
    while tNonFinal[iRandom] do 
     iRandom = math.random(1, M) 
    end 
    table.insert(tNonFinal, iRandom, true) 
    tFinal[i] = iRandom 
end 

당신의 필수 테이블을 코딩하십시오. 조건을 추가 할 수도 있습니다. if M < N then N = M end

+0

정말 고마워! – Eyeball

3

...

local myArray = {} 
local valueArray = {1,2,3,4,5,6,7,8,9,10} -- let it be the array with values 1,2...M 

local index = 0 
local isFetched = {} 
for i=1,#valueArray do 
    isFetched[i] = 0 
end 

local randomValue = 0 
local function addTomyArray() 
    randomValue = math.random(#valueArray) 
    if(isFetched[randomValue]==0)then 
    index = index + 1 
    isFetched[randomValue] = 1 
    myArray[index] = valueArray[randomValue] 
    if(index==#valueArray)then 
     for i=1,#myArray do 
      print(myArray[i]) -- result : shuffled array 
     end 
    end 
    else 
    addTomyArray() 
    end 
end 
timer.performWithDelay(0,addTomyArray,#valueArray) -- #valueArray 

tFinal 될 것입니다 ........

+0

도움 주셔서 감사합니다. 내가 일하도록 해 = D – Eyeball