Programing

배열에서 무작위로 어떻게 선택합니까?

lottogame 2020. 2. 10. 22:01
반응형

배열에서 무작위로 어떻게 선택합니까?


이 작업을 수행하는 훨씬 더 깨끗한 방법이 있는지 알고 싶습니다. 기본적으로 가변 길이 배열에서 임의의 요소를 선택하고 싶습니다. 일반적으로 다음과 같이합니다.

myArray = ["stuff", "widget", "ruby", "goodies", "java", "emerald", "etc" ]
item = myArray[rand(myarray.length)]

두 번째 줄을 대체하기가 더 읽기 쉽고 더 쉬운 것이 있습니까? 아니면 최선의 방법입니다. 나는 당신이 할 수 있다고 가정 myArray.shuffle.first하지만 #shuffle, 몇 분 전만 보았 으므로 실제로는 사용하지 않았습니다.


그냥 사용하십시오 Array#sample:

[:foo, :bar].sample # => :foo, or :bar :-)

Ruby 1.9.1 이상에서 사용할 수 있습니다. 또한 이전 버전의 Ruby에서 사용할 수 있도록 할 수 require "backports/1.9.1/array/sample"있습니다.

Ruby 1.8.7에서는 불행한 이름으로 존재합니다 choice. 이후 버전에서는 이름이 바뀌 었으므로 사용해서는 안됩니다.

이 경우에는 유용하지 않지만 sample여러 개의 고유 한 샘플을 원할 경우 숫자 인수를 허용합니다.


myArray.sample(x) 또한 배열에서 x 임의의 요소를 얻는 데 도움이 될 수 있습니다.


배열에서 난수의 난수

def random_items(array)
  array.sample(1 + rand(array.count))
end

가능한 결과의 예 :

my_array = ["one", "two", "three"]
my_array.sample(1 + rand(my_array.count))

=> ["two", "three"]
=> ["one", "three", "two"]
=> ["two"]

myArray.sample

1의 임의의 값을 반환합니다.

myArray.shuffle.first

또한 1의 임의의 값을 반환합니다.


arr = [1,9,5,2,4,9,5,8,7,9,0,8,2,7,5,8,0,2,9]
arr[rand(arr.count)]

이것은 배열에서 임의의 요소를 반환합니다.

아래 언급 된 줄을 사용한다면

arr[1+rand(arr.count)]

어떤 경우에는 0 또는 nil 값을 반환합니다.

아래 언급 된 줄

rand(number)

항상 0에서 1까지의 값을 반환하십시오.

우리가 사용한다면

1+rand(number)

그러면 숫자를 반환하고 arr [number]에는 요소가 없습니다.


class String

  def black
    return "\e[30m#{self}\e[0m"
  end

  def red
    return "\e[31m#{self}\e[0m"
  end

  def light_green
    return "\e[32m#{self}\e[0m"
  end

  def purple
    return "\e[35m#{self}\e[0m"
  end

  def blue_dark
    return "\e[34m#{self}\e[0m"
  end

  def blue_light
    return "\e[36m#{self}\e[0m"
  end

  def white
    return "\e[37m#{self}\e[0m"
  end


  def randColor
    array_color = [
      "\e[30m#{self}\e[0m",
      "\e[31m#{self}\e[0m",
      "\e[32m#{self}\e[0m",
      "\e[35m#{self}\e[0m",
      "\e[34m#{self}\e[0m",
      "\e[36m#{self}\e[0m",
      "\e[37m#{self}\e[0m" ]

      return array_color[rand(0..array_color.size)]
  end


end
puts "black".black
puts "red".red
puts "light_green".light_green
puts "purple".purple
puts "dark blue".blue_dark
puts "light blue".blue_light
puts "white".white
puts "random color".randColor

참고 URL : https://stackoverflow.com/questions/3482149/how-do-i-pick-randomly-from-an-array



반응형