[ruby] Ruby에서 a와 b 사이의 난수를 생성하는 방법은 무엇입니까?

예를 들어 3에서 10 사이의 난수를 생성하려면 다음을 사용하십시오. rand(8) + 3

이 작업을 수행하는 더 좋은 방법이 rand(3, 10)있습니까?



답변

업데이트 : Ruby 1.9.3 Kernel#rand은 범위를 허용합니다.

rand(a..b)

http://www.rubyinside.com/ruby-1-9-3-introduction-and-changes-5428.html

배열로 변환하는 것이 너무 비쌀 수 있으며 불필요합니다.


(a..b).to_a.sample

또는

[*a..b].sample

배열 # 샘플

Ruby 1.8.7+의 표준.
참고 : 1.8.7에서는 이름이 #choice이고 이후 버전에서는 이름이 변경되었습니다.

그러나 어쨌든 어레이를 생성하려면 리소스가 필요하며 이미 작성한 솔루션이 최선입니다.


답변

Random.new.rand(a..b) 

a가장 낮은 가치는 어디에 b있고 가장 높은 가치는 어디에 있습니까 ?


답변

rand(3..10)

커널 #rand

max가 Range 인 경우 rand는 range.member? (number) == true 인 난수를 반환합니다.


답변

범위 연산자의 차이점에 유의하십시오.

3..10  # includes 10
3...10 # doesn't include 10


답변

참조 대답 : 이전 버전이 루비 1.9.2에 있지만. 개인적으로 나는 rand (8) + 3이 괜찮다고 생각하지만, 관심이 있다면 링크에 설명 된 Random 클래스를 확인하십시오.


답변

10과 10 ** 24

rand(10**24-10)+10


답변

def random_int(min, max)
    rand(max - min) + min
end