私がやりたいこと: 1 つのファイル (入力ファイル) からビットを読み取り、これらの (ある程度の確率で) 反転されたビットを他のファイル (出力ファイル) に書き込みます。
問題は何ですか: 確率のアイデアが正しく機能していないようです。さらに重要なことに、出力ファイルには常に元の入力ファイルよりも多くの文字が含まれていますが、同じ数の文字が含まれている必要があります。
このコード サンプルでは、反転ビットの代わりに 'x' と 'y' を入れたので、出力ファイルにより多くの文字が含まれていることがより明確になります。
入力ファイル: 01001
出力ファイル: xyxxxyx
コード:
void invert_bits(FILE **input, FILE **output, double prob){
srand(clock());
char symbol;
while((symbol = getc(*input)) != EOF){
double result = rand()/RAND_MAX;
if(result < prob){
if(simbol == '0'){
char bit = 'x';
fprintf(*output, &bit);
}
else{
char bit = 'y';
fprintf(*output, &bit);
}
}else{
fprintf(*output, &symbol);
}
}
}