문제

array={}
size=10

math.randomseed(os.time())
for i=1,size do
    array[i]=math.random(size)
    if(i>1) then
        for j=1,i do
            if  array[j]==array[i] then
                i=i-1
                break
            end
        end
    end
end

for i=1,size do
    print(array[i])
end
.

위의 코드는 반복 값을 피하는 1에서 '크기'까지 난수의 배열을 생성하는 것을 의미했습니다.나는 재판을 줄이기 전에 새로 생성 된 값이 어딘가에있는 경우에 최상위 레벨 '을 반복하여'루프의 루프를 반복하여 '루프를 반복 해려고 노력했습니다.어떻게 든 작동하지 않습니다.왜?

루프 내부에서 반복자 값을 수정할 수 없습니까?

배열 값을 반복하는 값으로 출력 예 :

>lua5.1 "pairsss.lua"
2
1
10
6
5
2
5
7
7
4
>Exit code: 0
.

도움이 되었습니까?

해결책

문제에 대한 해결 방법은 임의의 반복을 루아에서 테이블을 채우기 위해 임의의 반복을 섞는 것입니다.

Lua 5.1 참조 설명서 :

§2.4.5 - 진술

세 가지 제어 표현식은 루프가 시작되기 전에 한 번만 평가됩니다.그들은 모두 숫자가 발생해야합니다.

i 루프에서 for 값을 변경하는 방법에 관계없이 반복이 수행되는 방법에는 영향을 미치지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top