Here you can find the source of randLong(long n)
public static long randLong(long n)
//package com.java2s; /******************************************************************************* * Crimson Extended Administration Tool (CrimsonXAT) * * Copyright (C) 2015 Subterranean Security * * * * This program 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 * * (at your option) any later version. * * * * This program 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 this program. If not, see http://www.gnu.org/licenses * *******************************************************************************/ import java.util.Random; public class Main { public static long randLong(long n) { long bits, val; do {/* w ww . j a v a 2 s . co m*/ bits = (new Random().nextLong() << 1) >>> 1; val = bits % n; } while (bits - val + (n - 1) < 0L); return val; } }