For some reason, I need to have a program that will make a small no. of mistakes every now and then, and I should not know what mistakes it has made and when.
I do not need it to make multiple mistakes in one set(run of the algorithm), but rather I plan on making (say) 10,000 runs of the program, and I need it to make mistakes 200 times ..
Very importantly, I must be sanguine that there are no more than (1/5)n mistakes, where n is the total no. of results generated using the program.
The results that I am talking about here can be anything that is quantifiable and verifiable, like eg. an array of values.
Doing something like this:
for(int i=0; i<10000; i++)
//one fifth of the times put garbage in the array using random function!!
for (int j=0; j<5; j++)
array[j]=j;
is too simplistic and not real enough.
So I thought may be I must look for a mathematical function that can do this for me. Any ideas ?
P.S. I am a noob at math (struggled with engineering college math). So please elaborate your answer. Dont say something like "Use XXX'YYY theorem .." I might not understand! Also, plese attach proper taf to this question. I could not thing of any ..
Sometimes a programming language will allow picking a (pseudo-)random item from a list. If you can the following pseudocode seems to do what you want:
BigList is the complete list of the number of runs, say 10000.
For $i$ = $1$ to $200$.
Pick $n$ from BigList. (This uses the item picking function)
Replace BigList with BigList $\smallsetminus \{ n \} $. (Delete $n$ from BigList)
End For (At the end of the for loop we now know which runs should have an error.
Do $i$ = $1$ to $10000$.
If $i$ is still in BigList do the right thing, else do the wrong thing.
End Do.