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

228 Views Asked by At

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

1

There are 1 best solutions below

0
On BEST ANSWER

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.