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++)

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

  • $\begingroup$ 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? $\endgroup$ – Ross Millikan Jan 10 '12 at 14:06
  • 1
    $\begingroup$ So, something like if (rand() < 0.2) then, then? $\endgroup$ – J. M. is a poor mathematician Jan 10 '12 at 14:07
  • $\begingroup$ @J.M. Sorry, cant use that. (I think this was clear enough from my code sample) $\endgroup$ – Chani Jan 10 '12 at 15:47
  • 5
    $\begingroup$ No, it wasn't; you haven't said anything about conditionals not being allowed. $\endgroup$ – J. M. is a poor mathematician Jan 10 '12 at 15:51
  • 2
    $\begingroup$ Are @RYUZAKI and drunkMonk the same person? $\endgroup$ – 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.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.