-4

バイトのファイルを作成するように求められます。配列バイト a[] = {97, 98, 99, 100, 101, 102}が与えられた ので、a[] 配列からバイト ファイルを作成する必要があります。しかし、私には制限があります:

  1. ファイルのデータは (a[] から) ランダムでなければなりません
  2. ファイル内のすべてのバイトがほぼ同時に検出される必要があります。

    public class WriteByteFile { byte[] a = {97, 98, 99, 100, 101, 102};

    最終文字列 file = "file";

    /* ファイルを開く */ BufferedOutputStream out = null; { out = new BufferedOutputStream (new BufferedOutputStream(file)); を試してください。} catch (FileNotFoundException e1) { System.err.println("ファイルを開けません: " + file1 + ": " + e1.getMessage()); System.exit(1); }

    /* write file */ try { for (int b = 0; b < 1650; b++) { out.write(//ここで a[] からランダム要素を取得する必要がありますが、次の 5 回は再度取得しないでください) ; }

4

2 に答える 2

1

1.the data of the file must be random (from the a[])

2.all the bytes must be detected in the file almost the same times.

この 2 つの行は矛盾しています。すべての文字がsame no of timesファイルに存在する必要がある場合、配列からの文字の選択はランダムではありません。

于 2012-12-15T09:44:29.850 に答える
0

ファイル内のすべてのバイトがほぼ同時に検出される必要があります。

ここで重要なのは「ほぼ」です。ここでは正確な同等性は必要ありません。統計的な同等性のみが必要です。

他のバイトとは無関係に、各バイトをランダムに選択すると、これが満たされます。残りは統計が行います。サイコロを投げ続けると、ほぼ同じ回数 1 ~ 6 が出ますが、正確な同等性を保証するメカニズムはありません (実際、正確な同等性はここではほとんどありません)。

于 2012-12-15T09:52:47.817 に答える