[Demonstration 1]

[Buggy Method]
@RequestMapping("/magicholid8ball")
public Holiday holiday(@RequestParam(value = "monthName", defaultValue = "any") String monthName) {
    int monthNum = 0;
    String name = "Unknown";
    if ("ANY".equalsIgnoreCase(monthName)) {
        monthNum = ThreadLocalRandom.current().nextInt(0, 12);
    }
    switch(monthNum) {
        case 1:
            monthName = "January";
            name = "New Year's Day";
            break;
        case 2:
            monthName = "February";
            name = "Valentine's Day";
            break;
        case 3:
            monthName = "March";
            name = "St. Patrick's Day";
            break;
        case 4:
            monthName = "April";
            name = "April Fool's Day";
            break;
        case 5:
            monthName = "May";
            name = "Cinco de Mayo";
            break;
        case 6:
            monthName = "June";
            name = "Flag Day";
            break;
        case 7:
            monthName = "July";
            name = "Independence Day";
            break;
        case 8:
            monthName = "August";
            name = "Purple Heart Day";
            break;
        case 9:
            monthName = "September";
            name = "Labor Day";
            break;
        case 10:
            monthName = "October";
            name = "Columbus Day";
            break;
        case 11:
            monthName = "November";
            name = "Thanksgiving";
            break;
        case 12:
            monthName = "December";
            name = "Christmas Day";
            break;
        default:
            monthName = "Invalid month";
            break;
    }
    return new Holiday(counter.incrementAndGet(), String.format(template, name), String.format(template, monthName));
}

[Buggy Hunk]
monthNum = ThreadLocalRandom.current().nextInt(0, 12);

[Patch]
monthNum = ThreadLocalRandom.current().nextInt(1, 13);

[Demonstration 2]

[Buggy Method]
private String generateUniqueCode() {
    Random random = new Random();
    String temp = String.valueOf(random.nextLong());
    if (appUserService.findByApprovementCode(temp) == null) {
        return temp;
    } else {
        return generateUniqueCode();
    }
}

[Buggy Hunk]
String temp = String.valueOf(random.nextLong());

[Patch]
String temp = String.valueOf(random.nextInt());

[Demonstration 3]

[Buggy Method]
public static void randomize(Comparable[] a) {
    Random r = new Random((new Random()).nextInt());
    try {
        Thread.sleep(r.nextInt(1000));
        //Adding one more layer of randomness to protect time based generated random number
    } catch (InterruptedException ex) {
        Thread.currentThread().interrupt();
    }
    for (int i = 0; i < a.length; i++) {
        int x = r.nextInt(a.length - 1);
        SortHelper.swap(a, i, x);
    }
}

[Buggy Hunk]
Random r = new Random((new Random()).nextInt());

[Patch]
SecureRandom r = new SecureRandom();