반응형
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)
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
그리고 여기에 모두 빠른 벤치 마크 #sample
와는 #rand
:
irb(main):014:0* Benchmark.bm do |x|
irb(main):015:1* x.report('sample') { 1_000_000.times { (1..100).to_a.sample } }
irb(main):016:1> x.report('rand') { 1_000_000.times { rand(1..100) } }
irb(main):017:1> end
user system total real
sample 3.870000 0.020000 3.890000 ( 3.888147)
rand 0.150000 0.000000 0.150000 ( 0.153557)
따라서 rand(a..b)
옳은 일을하는 것이
참고 URL : https://stackoverflow.com/questions/4395095/how-to-generate-a-random-number-between-a-and-b-in-ruby
반응형
'Programing' 카테고리의 다른 글
문자열에서 선행 쉼표 제거 (0) | 2020.05.15 |
---|---|
단일 쿼리에서 여러 행 삽입을위한 MySQL ON DUPLICATE KEY UPDATE (0) | 2020.05.15 |
JavaScript 번호에서 소수 부분을 제거하려면 어떻게해야합니까? (0) | 2020.05.15 |
시스템에 설치된 TensorFlow 버전을 찾는 방법은 무엇입니까? (0) | 2020.05.15 |
Android 레이아웃 요소의 배경색 설정 (0) | 2020.05.15 |