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

당신이 루비에서 난수&문자열을 생성하는 방법을 배우고 싶은 경우에,당신은 바로 이곳에있어.

즉,이 문서에 대해 정확히 무엇 때문에!

임의의 숫자로 배열에서 임의의 요소를 선택하고 목록에서 승자를 선택하고 주사위 롤 등을 생성 할 수 있습니다.

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

예를 들어…

랜드 방법은 3 가지 방법으로 사용할 수 있습니다:

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

루비에서 임의성을 생성하는 다른 방법은 다음과 같습니다:

  • 배열#셔플 방법
  • 배열#샘플 방법
  • 보안 랜덤 클래스

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

난수 생성

랜드 방법을 사용하여 루비 난수를 생성 할 수 있습니다.:

루비 랜덤

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

인수를rand에 전달하여 0 에서 시작하여 해당 숫자까지(제외)숫자를 생성 할 수 있습니다.

rand 100> 41

루비 난수 생성은 정말 쉽지만 숫자가 0 에서 시작하는 대신 특정 범위에 있어야한다면 어떨까요?

문제가 아닙니다!

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

예:

rand 200..500> 352

보안 루비 난수

랜드에 의해 생성 된 숫자는 간단한 응용 프로그램에 충분할 수 있습니다…

…하지만 암호 재설정 토큰을 생성하는 것과 같은 보안 목적으로 사용하려는 경우 루비 표준 라이브러리의 일부인 보안 난수를 사용해야합니다.이 경우 암호 생성기를 사용하여 암호 생성기를 사용하여 암호 생성기를 생성 할 수 있습니다.

다음은 예입니다:

require 'securerandom'SecureRandom.random_number> 0.232

rand처럼 많이 작동 볼 수 있듯이,당신은 또한 최대 수에 전달할 수 있습니다.

예:

SecureRandom.random_number(100)> 72

보안 난수에는 다른 출력 형식을 사용할 수 있습니다.

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

SecureRandom.hex> "87694e9e5231abca6de39c58cdfbe307"

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

SecureRandom.alphanumeric> "PSNVXOeDpnFikJPC"

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

지금:

목록에서 임의의 선택을 얻을 수 있습니다.

당신은 이것을 시도 할 수 있습니다:

.shuffle.first> 30

하지만 루비는이 작업에 더 적합하고 빠른 샘플 방법을 가지고 있습니다:

.sample> 5

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

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

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

.sample(2)> 

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

.sample(random: SecureRandom)

루비 임의의 문자열

궁극적 인 임의성 응용 프로그램은 사용자 정의 문자 세트와 임의의 문자열을 생성하는 것입니다. 여기에 코드가 있습니다:

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

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

먼저 범위를 사용하여 문자 집합을 준비하고 배열로 변환합니다. 그런 다음 블록으로Array.new을 호출하는 것을 활용합니다.

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

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

시드 난수 생성기

rand과 같은 방법을 사용할 때 생성되는 숫자를 제어하려면 시드를 설정할 수 있습니다.

씨앗은 무엇입니까?

시드는 난수의 시퀀스를 시작하는 숫자입니다.

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

그래서 시드의 품질이 일반적으로 난수의 좋은 시퀀스를 생성하는 열쇠입니다.

루비는 이미 당신을 위해 그것을 처리하지만(추가 보안이 필요한 경우SecureRandom사용)일부 시나리오(주로&디버깅 테스트)에서는이 시드를 직접 설정할 수 있습니다.

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

Kernel.srand(1)

이 씨앗을 사용하면 생성기가 어떤 숫자를 줄지 정확히 알 수 있습니다.

시드로 숫자 1:

Array.new(5) { rand(1..10) }# 

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

결론

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

친구와 공유하기&새로운 것을 놓치지 않도록 내 뉴스 레터를 구독하십시오!

답글 남기기

이메일 주소는 공개되지 않습니다.

Previous post 공항에서 게이트 패스를 얻는 방법[보안을 통해]
Next post 제이 레노 구매 시페어 콘도