// 随机数
public static final Random random = new Random();
/** 生成[0, n)范围的随机整数 */
public static int random(int n)
{
return random.nextInt(n);
}
/** 生成[lower, upper]范围的随机整数 */
public static int random(int lower, int upper)
{
if (lower > upper)
return random(upper, lower);
else
return random.nextInt(upper - lower + 1) + lower;
}
/** 序列数生成算法,生成1到n的随机序列数组,每个数值出现且仅出现一次 */
public static int[] getSerial(int n)
{
Random Rnd = new Random();
int[] tmp = new int[n];
int[] num1 = new int[n];
for (int i0 = 1; i0 <= n; i0++)
num1[i0 - 1] = i0;
for (int i = num1.length; i > 0; i--)
{
Rnd.setSeed(Rnd.nextLong());
int index = Rnd.nextInt(i);
// 随机选中一个数
tmp[i - 1] = num1[index];
// 剔除选中的数值
int[] num2 = new int[i - 1];
for (int j = 0; j < i; j++)
if (j < index)
num2[j] = num1[j];
else if (j > index) num2[j - 1] = num1[j];
num1 = num2;
}
return tmp;
}
/** 数组排序函数 */
public static int[] sort(int[] data)
{
int tmp;
for (int i = 0; i < data.length - 1; i++)
{
for (int j = i + 1; j < data.length; j++)
if (data[i] > data[j])
{
tmp = data[i];
data[i] = data[j];
data[j] = tmp;
}
}
return data.clone();
}