随机生成器返回多个结果

时间:2014-11-27 15:12:03

标签: java random

代码从文本文件中读取,并在txt中全部1000个单词变为真。然后它读取每个单词计算ist lenght并从该长度得到随机数(比如lenght是4,随机将是2)。然后用“*”替换该随机数字符。这将在以后用作主程序的样本。

问题是我多次得到同样的结果。

TXT:

http://textuploader.com/oyfi

public class random_2 {

public static void main(String[] args) {

    int dolzina = 0;
Object s;
    String outputFile = "random_2.txt";
    ArrayList<String> list = new ArrayList();

    try {

        File file = new File("random1.txt");
        FileReader fileReader = new FileReader(file);
        BufferedReader bufferedReader = new BufferedReader(fileReader);
        String vrstica;
        while ((vrstica = bufferedReader.readLine()) != null) {

            list.add(vrstica);
            // dolzina=list.size();
            // System.out.println(dolzina);

        }

        FileWriter fileWriter = new FileWriter(outputFile);
        PrintWriter out = new PrintWriter(fileWriter);
        for (int idx = 0; idx <= list.size(); ++idx) {
            String test=list.get(idx);
            dolzina=test.length();
            Random randomGenerator = new Random();
            for (int i = 0; i<= dolzina; ++i) {
                int randomInt = randomGenerator.nextInt(dolzina);
                StringBuilder beseda = new StringBuilder(test);
                beseda.setCharAt(randomInt, '*');
                System.out.println(beseda);

        }
        }
        System.out.println("Done.");

    } catch (IOException e) {
        e.printStackTrace();

    }
}
}   

1 个答案:

答案 0 :(得分:0)

您必须使用构造函数

Random(long seed)

可以将随机生成器视为具有预定义列表编号的对象,并在每次调用时将下一个数字返回到列表中。

使用Random(长种子)将第一个索引作为列表开始。

在您的代码中,您始终在位置0开始随机列表。

具体地说,我们将'seed'参数用于以毫秒为单位的实际时间。因此,每次运行程序时,都会使用不同的起始索引初始化随机生成器,每次运行时都会得到不同的结果。