2012-07-06 3 views
0

데이터가 무작위 인 주식 가격을 시뮬레이트하는 프로그램을 만들고 싶습니다. Math에서 random() 메서드를 사용하여 숫자를 생성하고 있습니다. 프로그램은 부동 소수점을 더하고 약간의 제한 후에는 그것을 뺍니다. 내 문제는 : 갑작스런 가을과 가치 상승을 원합니다. 어떻게 이것을 생성 할 수 있습니까?주가 시뮬레이션

private static float lastValue= 50.187786f; 
private static float limit=49.627786f; 
private static float min_value=0.334834f; 

private float randomValue() { 

double factor = Math.random()/10; 


if (lastValue >limit+min_value){ 
    lastValue=lastValue-(float)factor; 
}else if(limit<limit-min_value){ 
    lastValue = lastValue + (float) factor; 
}else{ 
    lastValue = lastValue + (float) factor; 
} 
+0

에는 2 개의 난수가 있습니다. 첫 번째는 두 번째의 크기 배율을 결정합니다. 첫 번째는 스파이크를 덜 (또는 그 이상) 공통으로 만들 수있는 어떤 방식으로 비례 계산 될 수 있습니다 (따라서 .8 이하인 경우 배율은 1입니다. 배수가 0.8 이상이면 배율은 5입니다) –

+0

나는 시간의 징표와 난수 발생기로 주식 시장의 행동을 모델화하는 일종의 메타 - 코멘트가있는 것처럼 느낀다. – Affe

+0

나는 그것을 시도했으나 끊임없이 증가하거나 감소했지만 갑작 스럽거나 떨어지지는 않았다. 이걸위한 알고리즘을 구현하는 호 – mallikarjun

답변

2

주식 시장은 일반적으로 랜덤 워크 (random walk)로 모델링 :

여기 내 코드입니다. 즉, 하나의 값을 올리거나 내릴 확률이 같지 않습니다. 즉

price += Math.random() >= 0.5 ? +1 : -1; 

당신은 조용한 시간 (초당 적은 이동) 및 바쁜 시간 급격한 증가의 원인 (자세한 초당 이동)

모델링 뉴스 이벤트 (이 있음을 모델에 추가 할 수 있습니다, 감소 또는 유지 주식의)는 더 복잡합니다. 나는 이것을 별개로 모델화 할 것이다. 즉 당신은 가격이 정상보다 훨씬 더 많이 움직일 가능성이 아주 적습니다.