2012-10-23 5 views
4

질문은 헤더에 있습니다. 이것을 할 보석이 있습니까? RealRand를 시도했지만 그것은 나를 위해 작동하지 않는 것 같습니다. 어쩌면 내가 뭔가 잘못하고있는 걸까요?ruby1.9.3에서 실제 난수를 얻는 방법은 무엇입니까?

+2

"실제 무작위" –

+0

운영 시스템을 정의 하시겠습니까? 가능한 경우 :/dev/random – yeyo

+0

범위를 줄 수 있습니까? 0에서 1 사이의 숫자는 무한히 많습니다. – sunnyrjuneja

답변

1

가 "진짜"임의의 숫자는 컴퓨터와, 그것을 할 수있는 알고리즘에 의해 genereated 될 수 없음을 규정하는 가장 좋은 정의와 내가 한마디로 http://realrand.rubyforge.org/ 에서 발견 (있습니다 없습니다 의사) "진짜"임의의 숫자의 소스 자연에 의해서만 생성 될 수 있습니다. 나는 자연이 알고리즘의 무리라는 말을하는 이론을 알고 있습니다. 그래서 나는 그것이 내 수준을 초월한 토론을위한 음식이라고 생각합니다. 어쨌든이 사이트는 "컴퓨터에 인터페이스 된 가이거 - 뮐러 튜브에 의해 감지 된 방사성 붕괴의 연속적인 타이밍"과 같은 것들로부터 난수를 생성하는 일부 사이트를 제공합니다.

나는이 질문과 대답에 어떤 관심이 있는지, 나에게서 +1을 받았다.

2

Ruby 1.9에는 Mersenne Twister라는 알고리즘을 기반으로 의사 난수를 생성하는 Random이라는 클래스가 있습니다. 개인적인 수준에서 실제 사용을 위해서는 아마도 충분할 것입니다.

+0

-1 이것은 OP가 요구 한 것이 전혀 아니다. 의사 난수 생성기는 (T, e) - 무작위 생성기와 구별 할 수 없지만 설명없이 질문을 무시하는 것은 무리한 것 같습니다. – Ziggy

2

피터가 맞습니다. 그러나 우리는 openssl과 secure random으로 꽤 좋은 임의성을 얻을 수 있습니다.

코드 :

require "securerandom" 
puts SecureRandom.random_number 
1

난 당신이 좀 더 귀하의 질문에 생각 줄 필요가 있습니다 생각합니다. 0과 1 사이에 더 많은 실수가 있고 음수 무한대와 무한대 사이의 정수가 있습니다. 카디널리티에 대한 위키 백과 문서를 실수로 표현하면 look이됩니다.

그러나 범위와 정밀도 내에서 실수 난수를 쉽게 생성 할 수 있습니다. 16 자리의 정밀도로 0과 1 사이의 실제 난수를 생성하려고한다고 가정합니다.

r = Random.new 
r.rand 
=> 0.7182182166496581 

당신은 더 많은 정보를 원하시면 -10 사이 10

r.rand(-10.0..10.0) 
=> 7.00152804654363 

체크 아웃 http://www.ruby-doc.org/core-1.9.3/Random.htmlHow to get a random number in Ruby을 실수를 생성하기 위해이 솔루션을 적용 할 수 있습니다.

+1

답장을 좀 더 생각해 볼 필요가 있습니다. 디지털 컴퓨팅에서 숫자는 유한 2 진수 조합으로 float로 표현됩니다. 실수는 처음부터 처리 할 수 ​​없습니다. OP는 당신이하는 의미에서 "진짜"를 의미하지는 않았을 것입니다. 귀하의 코드는 임의의 숫자에 실수로 정확한 분포를 부여하지 않습니다 (귀하의 의미에서 "실제"라고 함). 그런데 카디널리티에 대해 언급하는 이유는 알 수 없지만 닫힌 간격 [0, 1]의 카디널리티는 모든 실수의 카디널리티와 같습니다. 범위 지정 여부에 따라 차이가 없습니다. – sawa

+0

나는 카디널리티가 전체 실수 나 R의 서브 세트보다 [0,1]보다 큼을 주장하지 않았다. 내가 카디널리티를 가져온 이유는 당신이 말했듯이, 실제 난수를 생성 할 수 없기 때문이다. 내가 생각하기에 무한하고 무한하다. 비록 코드가 R을 통한 전체 분포에 대해 진정한 무작위성을 제공하지 않는다는 사실을 알고 있지만, 나는 정해진 정확도를 넘어서서 실제 난수를 제공한다고 말할 수있는 대답을 수정할 것입니다. – sunnyrjuneja

+0

비합리적인 숫자를 만들 수 있습니까? 무한한 저장 장치가 필요하지 않습니까? – Ziggy

관련 문제