Decrease error rate for loop.
1494 단어 interview
Given a method
long compute(int i)
{
return ...
}
The error rate p = 1/10,000
Another method
long total(int n)
{
long s = 0;
for (i = 0 ; i < n ; i ++)
{
s += compute(i);
}
return s;
}
Thus the error rate is np.
How to improve the second method to control its rate below p.
total will run n steps. So to make the total rate below p.
each step need to below p/n.
let's run compute k times when
(p ^ k < p/n).
long total(int n)
{
int k = calcComputeTimes(n);
long s = 0;
for (int i = 0 ; i < n ; i++)
{
s += safeCompute(i, k);
}
return s;
}
// Find the min value of k when P^k < p/n
int calcComputeTimes(n)
{
double temp = p / n;
int k = 1;
while(pow(P, k) >= temp)
{
k ++;
}
return k;
}
// Runs compute() k times to find the most possible results.
// If the possible of two results are the same, return the first computed one.
double safeCompute(i, k)
{
Map<Double, Integer> computeMap = new HashMap<>();
int maxOccurSeen = 0;
double result = 0;
for (int t = 0 ; t < k ; t ++)
{
int r = compute(i);
Integer occur = computeMap.get(r);
if (occur == null)
{
occur = 1;
}
computeMap.put(r, occur);
if (occur > maxoccurSeen)
{
maxOccurSeen = occur;
result = r;
}
}
return result;
}
static double P = 1 / 10,000;
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
알고리즘 1000 개 노크 #2. Longest common substringsProblem Solution DP (다이나믹 프로그래밍) 중에서 고전적인 문제입니다. 두 문자열을 S1과 S2, 각각의 길이를 M, N으로 설정합니다. 총당으로 S1에서 모든 부분 문자열을 추출하고, 그것들이 S2...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.