Geant4 가이드

Randomize

랜덤 엔진은 보통 같은 시드를 사용했을 때 항상 같은 랜덤 수의 배열을 사용한다. 매 시뮬레이션을 마다 항상 같은 결과를 원하는 것이 아니라면 항상 다른 시드를 사용해야 한다. 예를 들어서 c의 time 함수를 이용해서 메인 프로그램에 다음과 같이 적용할 수 있다.

G4Random::setTheSeed(time(0));

헤더는 Randomize.hh와 time.h를 사용한다.

G4Random의 랜덤 엔진은 다음과 같이 지원한다.

  • HepJamesRandom (기본)
  • DRand48Engine
  • RandEngine
  • RanluxEngine
  • RanecuEngine

자세한 내용은 아래 참고자료를 참고 하자. 엔진 세팅은 다음과 같이 한다.

G4Random::setTheEngine(new CLHEP::RanecuEngine);

균일하게 랜덤한 숫자를 꺼내오고 싶을 때는 flat() 함수를 사용한다.

G4Random::getTheGenerator() -> flat()

참고자료

댓글

댓글 본문
작성자
비밀번호
  1. 이핑크
    random 함수를 사용하여 매 이벤트마다 random하게 particle을 발사하려고하면 어떻게해야 할까요?
    인터넷을 찾아보니 G4uniformRand()함수를 사용하는것 같기도한데 위예제 에서는 어떻게 사용해야할지 잘모르겠네요. 혹시 일정한 반지름 안에서 random하게 쏠수도 있을까요?
버전 관리
ejungwoo
현재 버전
선택 버전
graphittie 자세히 보기