Questa è una domanda puramente accademica
Contesto:
Sto lavorando con alcuni algoritmi che hanno lo scopo di arrivare a un consenso nei sistemi distribuiti. Intendevo affrontare gli errori bizantini con questi algoritmi. Per questo ho implementato diversi algoritmi pubblicati nei documenti IEEE e ho bisogno di una piattaforma per testare questi algoritmi. Volevo testare il merito degli algoritmi esistenti. Per questo ho implementato migliaia di Contenitori Linux sul mio sistema e ora voglio passare il messaggio tra di loro o dire simula il mio sistema distribuito. Ma la domanda è che i dati che stanno scorrendo devono avere errori . Questa è la genesi di questa domanda. Perché ho bisogno di qualcosa di più sofisticato di RNG è che dovrò attribuire una certa credibilità al mio lavoro. Voglio che affronta alcuni errori di generazione di applicazioni nel mondo reale piuttosto che correggere i guasti che io stesso ho generato in un algoritmo.
Quindi, ho bisogno di simulare i fattori che provocano errori bizantini.
OR, per citare FrustatedWithFormsDesigner:
I need to develop a testing strategy that will have a deliberate number of faults to test fault-handling
Per riepilogare:
Supponiamo che io stia eseguendo un programma in un ambiente distribuito, quali sono i fattori che potrebbero finire per generare errori bizantini ed è possibile per me inculcare questi fattori nella mia simulazione e in che modo?
Quindi, quello di cui ho bisogno è:
Un programma che farà un piccolo no. di errori ogni tanto, e non dovrei sapere quali errori ha commesso e quando.
Non ho bisogno di fare più errori in un set (esecuzione dell'algoritmo), ma piuttosto di fare (diciamo) 10.000 esecuzioni del programma, e ne ho bisogno per commettere errori 2000 volte. .
Molto importante, devo essere ottimista che non ci siano più di (1/5) n errori, dove n è il no totale. dei risultati generati utilizzando il programma.
I risultati di cui sto parlando possono essere qualsiasi cosa che sia quantificabile e verificabile, come ad es. una serie di valori.
Fai qualcosa del genere:
1for(int i=0; i<10000; i++)
2 //one fifth of the times put garbage in the array using random function!!
3 for (int j=0; j<5; j++)
4 array[j]=j;
l'utilizzo di un RNG nel passaggio 2
in nascondi dove l'errore è presente è troppo semplicistico, banale e non reale sufficiente.
Pensavo di poter usare un algoritmo costruito attorno a una funzione matematica che è destinata a fallire 1/5 delle volte, ma non riuscivo a pensare a nessuna.
P.S. Per favore, dimmi se hai bisogno di più dati per capire il problema.