2014-12-26 4 views
1

둘 다어떻게 글로벌 난수 생성기를 정의 할 수 있습니까?

static mut rng:XorShiftRng = XorShiftRng::new_unseeded(); 
static mut rng:Rng + 'static = rand::weak_rng(); 

하지만 어느 작업을 시도했습니다. 그렇게하는 방법입니까?

내가 임의의 숫자를 필요로하는 일부 재귀 기능이 모듈을 만들고 싶어

편집. 사용자가 난수 생성기를 제공하지 않아도 사용자에게 구조체를 제공하지 않아도됩니다. 따라서 모듈 단위의 RNG가 있기를 바랍니다.

+1

짧은 대답은 할 수 없습니다. 왜 이것을하고 싶은지 조금 더 추가 할 수 있습니까? 그것은 우리가 당신이하고 싶은 일과 어떤 종류의 대답이 최선인지 이해하는 데 도움이 될 것입니다. – Shepmaster

답변

0

녹 1.0 1.0 녹

, task_rngrand 상자로 이동하고 현재 thread_rng로 알려져있다.

원래

당신은 단순히위한 무료 난수 생성기를 할 수있는 능력, 나는 TaskRng 보는 게 좋을 것 싶다면 :

는 검색하려면 게으르게 초기화 작업 로컬 임의 시스템에 의해 시드 된 번호 생성기.

언제나 사용하기 쉬운 RNG로 사용할 수 있습니다.

제쳐두고 : 나는 항상 코드에 내 자신의 RNG를 제공하는 것이 유용하다는 것을 알았다. 소비자가 그 힘을 필요로하지 않을 때 기본값을 갖는 것은 좋지만, 임의의 난수 문자열을 재생산하는 능력은 성능이나 기능 테스트에 매우 유용합니다.

+0

그래서 task_rng() 함수 호출은 항상 성능 페널티없이 동일한 시스템 RNG를 반환한다고 말하고 있습니다. 그게 맞습니까? – Amos

+0

전체 정보는 [출처 확인] (https://github.com/rust-lang/rust/blob/4a4c89c7a4a763c253a97ff04647f52aca6a5490/src/libstd/rand/mod.rs#L329-L354)이지만 각 작업 (스레드)에는 자체 RNG이므로 작업 당 한 번 * 작은 성능이 발생합니다. – Shepmaster