【问题标题】:How to generate 5% out of order text files [closed]如何生成 5% 乱序文本文件 [关闭]
【发布时间】:2013-04-22 21:00:08
【问题描述】:

我和我的班级正在进行一项 Java 编程任务,该任务测试不同排序算法的运行时间。我们生成存储不同数量的随机生成整数的文本文件。大小为:100、1000、10 000、100 000、1 000 000。我能够在这些文件上正确运行排序算法,但不知道下一步该怎么做。

我们需要创建或修改这些文本文件,因此只有 5% 的随机整数不合适。我不能只移动最后的 5%,因为它必须均匀分布。此外,他说,在“打乱”这些文件时,不应再次移动已移出位置的整数,以防止将其移回原来的位置。任何人有任何想法我会如何做到这一点?谢谢。

【问题讨论】:

    标签: java sorting random integer


    【解决方案1】:
    List<Integer> numbers = new ArrayList<Integer>();
    
    int n = 100;
    for (int i=0; i<n; i++) {
      numbers.add(i);
    }
    //The array is now 1, 2, 3, ..., 99, 100. Critically, it is sorted.
    
    List<Integer> disordered = new ArrayList<Integer>();
    for (int i=0; i<n; i++) {
      if (Math.random() < 0.05) {
        // 5% chance of taking a number from numbers and adding it to disordered
        numbers.remove(i);
        disordered.add(i);
      }
    }
    
    while (!disordered.isEmpty()) {
      int x = disordered.remove(0); // Pick a number from disordered
      int position = Math.random()*numbers.size(); // Generate a random number in the domain of numbers
      numbers.add(position, x);
    }
    

    我希望这就是您所说的“5% 故障”的意思。请注意,数字可能会显示在原来的位置,但不会移动两次。

    【讨论】:

    • 我的英雄。不知道这样使用 Math.random() 。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    • 2018-06-29
    • 1970-01-01
    • 2018-09-01
    • 1970-01-01
    • 2013-02-11
    • 1970-01-01
    相关资源
    最近更新 更多