Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

//package com.java2s;
/* 
 * Copyright 2008-2013, ETH Zrich, Samuel Welten, Michael Kuhn, Tobias Langner,
 * Sandro Affentranger, Lukas Bossard, Michael Grob, Rahul Jain, 
 * Dominic Langenegger, Sonia Mayor Alonso, Roger Odermatt, Tobias Schlueter,
 * Yannick Stucki, Sebastian Wendland, Samuel Zehnder, Samuel Zihlmann,       
 * Samuel Zweifel
 *
 * This file is part of Jukefox.
 *
 * Jukefox is free software: you can redistribute it and/or modify it under the
 * terms of the GNU General Public License as published by the Free Software 
 * Foundation, either version 3 of the License, or any later version. Jukefox is
 * distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 
 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
 * PARTICULAR PURPOSE. See the GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along with
 * Jukefox. If not, see <http://www.gnu.org/licenses/>.
 */

import java.util.ArrayList;

import java.util.HashMap;

import java.util.Random;

public class Main {
    public static ArrayList<Integer> getRandomNumbers(int range, int count, Random rnd) {
        if (count > range) {
            return null;
        }
        if (count < 0 || range < 0) {
            return null;
        }
        HashMap<Integer, Integer> used = new HashMap<Integer, Integer>();
        ArrayList<Integer> indices = new ArrayList<Integer>();
        int n = range;
        while (indices.size() < count) {
            Integer r = Integer.valueOf(rnd.nextInt(n));
            if (used.containsKey(r)) {
                indices.add(used.get(r));
            } else {
                indices.add(r);
            }
            addToUsed(used, r, n - 1);
            n--;
        }
        return indices;
    }

    private static void addToUsed(HashMap<Integer, Integer> used, Integer key, Integer value) {
        if (used.containsKey(value)) {
            value = used.get(value);
            addToUsed(used, key, value);
        }
        used.put(key, value);
    }
}