Computer >> 컴퓨터 >  >> 프로그램 작성 >> Ruby

Ruby에서 난수 및 문자열을 생성하는 방법

Ruby에서 난수 및 문자열을 생성하는 방법을 배우고 싶다면 바로 찾아오셨습니다.

그것이 바로 이 기사의 내용이기 때문입니다!

임의의 숫자로 임의의 요소를 선택할 수 있습니다 배열에서, 목록에서 승자 선택, 주사위 굴림 생성 등

Ruby에는 다양한 속성을 가진 난수를 생성하는 많은 방법이 있습니다.

예를 들어...

rand 방법은 3가지 방법으로 사용할 수 있습니다.

  • 인수 없이 rand 부동 소수점 0과 1 사이의 숫자 제공 (예:0.4836732493)
  • 정수 사용 인수(rand(10) ) 0과 해당 숫자 사이의 새 정수를 얻습니다.
  • 범위 인수(rand(1..20) ) 범위 시작과 범위 끝 사이의 정수를 얻습니다.

Ruby에서 임의성을 생성하는 다른 방법은 다음과 같습니다.

  • 배열#셔플 방법
  • 배열#샘플 방법
  • SecureRandom 수업

몇 가지 예를 살펴보겠습니다!

난수 생성

rand를 사용하여 Ruby 난수를 생성할 수 있습니다. 방법:

Ruby에서 난수 및 문자열을 생성하는 방법

Rand는 부동 소수점 숫자를 생성합니다(0.4836732493). ) 인수 없이 호출된 경우.

rand에 인수를 전달할 수 있습니다. 0에서 시작하는 숫자를 생성하기 위해 (그러나 포함하지 않음 ) 해당 번호입니다.

rand 100
> 41

Ruby 난수 생성은 정말 쉽지만 숫자가 0부터 시작하는 대신 특정 범위에 있어야 한다면 어떻게 해야 할까요?

문제 없습니다!

범위를 사용하여 필요한 것을 정확히 얻을 수 있습니다.

:

rand 200..500
> 352

보안 루비 난수

rand로 생성된 숫자는 간단한 응용 프로그램에 충분할 수 있습니다...

...하지만 비밀번호 재설정 토큰 생성과 같은 보안 목적으로 사용하려면 SecureRandom을 사용해야 합니다. , Ruby 표준 라이브러리의 일부입니다.

SecureRandom은 Unix 시스템의 /dev/urandom에서 생성기를 시드하고 Windows에서는 CryptAcquireContext / CryptGenRandom API를 사용합니다.

예시 :

require 'securerandom'

SecureRandom.random_number
> 0.232

보시다시피 이것은 rand와 매우 유사합니다. , 최대 수를 전달할 수도 있습니다.

:

SecureRandom.random_number(100)
> 72

보안 랜덤 다른 출력 형식을 사용할 수 있습니다.

hex 사용 16진수 고정 너비 문자열을 생성할 수 있습니다.

SecureRandom.hex
> "87694e9e5231abca6de39c58cdfbe307"

Ruby 2.5는 임의의 영숫자 문자열을 생성하는 새로운 방법을 도입했습니다.

SecureRandom.alphanumeric
> "PSNVXOeDpnFikJPC"

배열에서 임의의 요소를 선택하는 방법

지금:

목록에서 무작위 선택을 원할 수 있습니다. .

다음을 시도할 수 있습니다.

[5, 15, 30, 60].shuffle.first
> 30

하지만 Ruby에는 샘플이 있습니다. 이 작업에 더 적합하고 더 빠른 방법:

[5, 15, 30, 60].sample
> 5

샘플을 사용할 수 있습니다. 범위의 경우 이 코드는 임의의 문자를 생성합니다.

('a'..'z').to_a.sample
> b

샘플에 정수 인수를 전달하여 N 고유한 요소를 얻을 수 있습니다. 배열에서:

[1,2,3].sample(2)
> [1, 2]

사용자 정의 임의 생성기를 인수로 전달할 수도 있습니다.

[1,2,3].sample(random: SecureRandom)

루비 임의 문자열

궁극적인 임의성 응용 프로그램은 사용자 지정 문자 집합으로 임의의 문자열을 생성하는 것입니다. 코드는 다음과 같습니다.

def generate_code(number)
  charset = Array('A'..'Z') + Array('a'..'z')
  Array.new(number) { charset.sample }.join
end

puts generate_code(20)

여기에 몇 가지 일이 있습니다.

먼저 범위를 사용하여 문자 집합을 준비하고 이를 배열로 변환합니다. 그런 다음 Array.new 호출을 활용합니다. 크기가 n인 배열을 초기화할 수 있는 블록으로 블록에 의해 생성된 값으로.

이 코드는 다음 형식의 문자열을 생성합니다. TufwGfXZskHlPcYrLNKg .

필요에 맞게 문자 집합을 조정할 수 있습니다.

난수 생성기 시드

rand와 같은 방법을 사용할 때 생성되는 숫자를 제어하려는 경우 그런 다음 시드를 설정할 수 있습니다.

씨앗이란 무엇입니까?

시드는 일련의 난수를 시작하는 숫자입니다.

생성된 모든 숫자는 이 시드에서 파생됩니다. .

그렇기 때문에 시드의 품질은 일반적으로 좋은 난수 시퀀스를 생성하는 열쇠입니다.

Ruby는 이미 이를 처리합니다(SecureRandom 사용 추가 보안이 필요한 경우) 그러나 일부 시나리오(대부분 테스트 및 디버깅)에서는 이 시드를 직접 설정하는 것이 좋습니다.

srand로 이 작업을 수행할 수 있습니다. 방법.

좋아요 :

Kernel.srand(1)

이 시드를 사용하면 생성기가 제공하는 숫자를 정확히 알 수 있습니다.

시드로서의 숫자 1을 위해 :

Array.new(5) { rand(1..10) }
# [6, 9, 10, 6, 1]

시드를 다시 1로 설정하면 시퀀스는 6에서 시작한 다음 9, 10 등으로 시작됩니다.

결론

그게 다야! 이제 Ruby 프로그램에서 임의성을 사용할 준비가 되었습니다. 🙂

이 게시물이 도움이 되었나요?

친구들과 공유하고 내 뉴스레터 구독 새로운 것을 놓치지 않도록!