Ruby에서 난수 및 문자열을 생성하는 방법을 배우고 싶다면 바로 찾아오셨습니다.
그것이 바로 이 기사의 내용이기 때문입니다!
임의의 숫자로 임의의 요소를 선택할 수 있습니다 배열에서, 목록에서 승자 선택, 주사위 굴림 생성 등
Ruby에는 다양한 속성을 가진 난수를 생성하는 많은 방법이 있습니다.
예를 들어...
rand 방법은 3가지 방법으로 사용할 수 있습니다.
- 인수 없이
rand
부동 소수점 0과 1 사이의 숫자 제공 (예:0.4836732493) - 정수 사용 인수(
rand(10)
) 0과 해당 숫자 사이의 새 정수를 얻습니다. - 범위 인수(
rand(1..20)
) 범위 시작과 범위 끝 사이의 정수를 얻습니다.
Ruby에서 임의성을 생성하는 다른 방법은 다음과 같습니다.
- 배열#셔플 방법
- 배열#샘플 방법
- SecureRandom 수업
몇 가지 예를 살펴보겠습니다!
난수 생성
rand를 사용하여 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 프로그램에서 임의성을 사용할 준비가 되었습니다. 🙂
이 게시물이 도움이 되었나요?
친구들과 공유하고 내 뉴스레터 구독 새로운 것을 놓치지 않도록!