2013-07-15 4 views

답변

11

루아의 math.random()이와 인수는 지정된 범위 내에서 정수를 반환합니다.

인수없이 호출되면 0.0 ~ 1.0 사이의 의사 랜덤 실수를 반환합니다.

지정된 범위의 실수를 얻으려면 자체 배율을 조정해야합니다. 예를 들면 :

math.random() * 0.8 + 0.1 

당신에게 0.1과 0.9 사이의 임의의 실수를 줄 것이다. 더 일반적으로 : 당신이 좋아하는 경우에 당신이 당신의 자신의 기능에 래핑 할 수

math.random() * (hi - lo) + lo 

.

그러나 나는 그것이 매우 특이한 범위라는 것에 주목할 것입니다. 당신이 정말로, 0.2, 0.1에서 선택된 임의의 숫자를 원하는 경우 0.3, 0.4, ..., 0.9, 당신은 9의 범위 (1)의 정수를 생성해야하고 10.0로 나누면 :

math.random(1, 9)/10.0 

보관할 것 대부분의 실수가 부동 소수점으로 정확하게 표현 될 수 없다는 것을 명심하십시오.

2

당신은 0과 1 사이의 숫자를 생성하는 math.random() (더 인수를) 사용할 수 없습니다, 그것을 사용하여 두 대상 번호를 섞습니다.

-- generates a random real number between a (inclusive) and b (exclusive) 
function rand_real(a, b) 
    return a + (b - a) * math.random() 
end 
0
(math.random(10,90))/100 

이렇게하면 10에서 90까지의 숫자가 생성되고 나누기는 0.1에서 0.9 사이의 숫자를 제공합니다.

+0

예, 해당 범위 내에서만 79 (90-10 + 1) 개의 고유 값을 제공합니다. 그것은 그것이 OP가 원하는 것일 것 같지 않습니다. 실제 난수를 얻으려면 인수없이'math.random() '을 호출하십시오. 다른 두 답변을 참조하십시오. –

관련 문제