숙제를 위해 작성한 프로그램

  • Post Author:
  • Post Category:
  • Post Comments:0 Comments
  • Post last modified:April 3, 2007

Hypergeometric Random Variable

Hypergeometric Random Variable은 다음과 같이 정의된다.

The probability of having exactly k objects of Type A, for max(0, r – (N-n)) <= k <= min(r, n) is

P(X = k) = C(n, k)*C(N-n, r-k) / C(N, r) .

P{X = i}를 P{X = i-1}에서 유도해낸 다음 프로그램으로 짜는 것이 통계 숙제였다.

public class MyMath
{
	// Factorial
	public static decimal Factorial(decimal n)
	{
		decimal result = 1;

		for (decimal i = 2; i <= n; ++i)
			result *= i;

		return result;
	}

	// Combination
	public static decimal Choose(decimal n, decimal k)
	{
		decimal result = 1;

		for (decimal i = Math.Max(k, n - k) + 1; i <= n; ++i)
			result *= i;

		for (decimal i = 2; i <= Math.Min(k, n - k); ++i)
			result /= i;

		return result;
	}

	// Hypergeometric Random Variable
	public static decimal Hypergeometric(decimal n, decimal m, decimal i, decimal k)
	{
		if (i == 0)
			return Choose(n, i) * Choose(m, k - i) / Choose(n + m, k);

		return (n-i+1)/i*(k-i+1)/(m-k+i)*Hypergeometric(n, m, i - 1, k);
	}
}

Modular Exponentiation

이산 구조 교재에 Modular Exponentiation 알고리즘이 제시되어 있었다. 문제는 특정 입력값에 따른 상태 변화를 적어서 제출하는 것이었다. 손으로 계산하고 나서 검증 차원에서 간단히 프로그램을 작성했다.

class Program
{
	static void Main(string[] args)
	{
		Console.WriteLine(mpower(2, 1, 7));
		Console.WriteLine(mpower(2, 2, 7));
		Console.WriteLine(mpower(2, 5, 7));
		Console.WriteLine(mpower(2, 10, 7));
	}

	static double mpower(double b, double n, double m)
	{
		if (n == 0)
			return 1;
		if(n % 2 == 0)
			return Math.Sqrt(mpower(b, n/2, m))%m;
		return (Math.Sqrt(mpower(b, Math.Floor(n/2), m))%(m*b)%m)%m;
	}
}
Kubernetes, DevSecOps, AWS, 클라우드 보안, 클라우드 비용관리, SaaS 의 활용과 내재화 등 소프트웨어 개발 전반에 도움이 필요하다면 도움을 요청하세요. 지인이라면 가볍게 도와드리겠습니다. 전문적인 도움이 필요하다면 저의 현업에 방해가 되지 않는 선에서 협의가능합니다.
follow me
  • 남자다움과 멍청한 건 엄밀히 달라. 남들까지 위험한 상황에 몰아넣지 말라구
    20 hours ago
  • 보더콜리가 횡단보도에서 헛짖었다. 뭔가 흥미로운 걸 발견한 모양인데 갑작스러우니 나를 포함해 여러 사람이 놀랐다. 그런데 그 놀라움이 멎쩍었을까? 옆에 있는 20대 초반 남자애가 개에게 위협적으로 소리를 지… https://t.co/8LL7OfX6mr
    20 hours ago
  • 와우 댓글 읽는데 어지럽네. 미국이 아무리 다양한 의견이 넘치는 사회라 해도 이 정도로 분열이 심했던가 https://t.co/zNisBhldx5
    1 day ago
Buy me a coffeeBuy me a coffee
×
Kubernetes, DevSecOps, AWS, 클라우드 보안, 클라우드 비용관리, SaaS 의 활용과 내재화 등 소프트웨어 개발 전반에 도움이 필요하다면 도움을 요청하세요. 지인이라면 가볍게 도와드리겠습니다. 전문적인 도움이 필요하다면 저의 현업에 방해가 되지 않는 선에서 협의가능합니다.
Latest Posts