# I need to write a program that shall make a small number of mistakes every now and then.

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 ..

-
What do you mean by real enough? Maybe define a set of mistakes that you choose from-swap a pair of values in the array, change just one value in the array, change all the 0's in the array to 1's? – Ross Millikan Jan 10 '12 at 14:06
So, something like if (rand() < 0.2) then, then? – J. M. Jan 10 '12 at 14:07
@J.M. Sorry, cant use that. (I think this was clear enough from my code sample) – Wildling Jan 10 '12 at 15:47
No, it wasn't; you haven't said anything about conditionals not being allowed. – J. M. Jan 10 '12 at 15:51
Are @RYUZAKI and drunkMonk the same person? – Rahul Jan 10 '12 at 16:58

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:

1. BigList is the complete list of the number of runs, say 10000.

2. For $i$ = $1$ to $200$.

3. Pick $n$ from BigList. (This uses the item picking function)

4. Replace BigList with BigList $\smallsetminus \{ n \}$. (Delete $n$ from BigList)

5. End For (At the end of the for loop we now know which runs should have an error.

6. Do $i$ = $1$ to $10000$.

7. If $i$ is still in BigList do the right thing, else do the wrong thing.

8. End Do.

-