如何从现有数组中取一个随机元素然后再不接受它?

时间:2012-12-15 09:40:58

标签: java arrays file-io random bytearray

我被要求制作一个字节文件。 我得到了数组字节a [] = {97,98,99,100,101,102} 现在我必须从a []数组中创建字节文件。 但我有局限性:

  1. 文件的数据必须是随机的(来自a [])
  2. 必须在文件中几乎同时检测到所有字节。

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

    final String file =“file”;

    / *打开文件* / BufferedOutputStream out = null; 尝试{     out = new BufferedOutputStream             (new BufferedOutputStream(file)); } catch(FileNotFoundException e1){         System.err.println(“无法打开文件:”+ file1             +“:”+ e1.getMessage());         System.exit(1);     }

    / *写文件* / 尝试{     for(int b = 0; b< 1650; b ++){         out.write(//这里我必须从[]获取随机元素                                  但是接下来的5次又没有了;)     }

2 个答案:

答案 0 :(得分: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.

这两条线是矛盾的。如果您的文件中必须存在所有字符same no of times,那么您从数组中选择的字符不是随机的。

答案 1 :(得分:0)

  

必须在文件中几乎同时检测到所有字节。

这里的关键是“差不多”。这里不需要精确等价,只需要统计等价。

如果您随机选择每个字节,您将满足此要求。统计数据将完成其余的工作。如果你继续投掷骰子,你将得到1-6几乎相同的次数,但没有机制来保证完全等效(事实上,这里确切的等效性是不太可能的)。