package wzs.arithmetics;
// 随机数
public class Test
{
public static void main(String[] args)
{
int[] test = getRandomIntWithoutReduplicate(0, 10, 5);
// Arrays.sort(test);
for (int i : test)
{
System.out.print(i + " ");
}
}
/**
* 返回一个不重复的随机数数组 [min, max)
* @param 最小随机数
* @param 最大随机数
* @param 数组长度
* @return 一个没有重复值的数组
*/
public static int[] getRandomIntWithoutReduplicate(int min, int max, int size)
{
int[] result = new int[size]; // 数组容器
int arraySize = max - min; // 数组范围
int[] intArray = new int[arraySize];
// 初始化数组
for (int i = 0; i < intArray.length; i++)
{
intArray[i] = i + min;
}
// 得到不重复的数组
for (int i = 0; i < size; i++)
{
int c = getRandomInt(min, max - i);
int index = c - min;
swap(intArray, index, arraySize - 1 - i);
result[i] = intArray[arraySize - 1 - i];
}
return result;
}
/**
* 交换数组中两个数字位置
* @param array
* @param x
* @param y
*/
private static void swap(int[] array, int x, int y)
{
int temp = array[x];
array[x] = array[y];
array[y] = temp;
}
/**
* 得到一个随机数int [min, max)
* @param 最小随机数值
* @param 最大随机数值
* @return 获得的随机数int
*/
public static int getRandomInt(int min, int max)
{
int result = min + new Double(Math.random() * (max - min)).intValue();
return result;
}
/**
* 得到一个随机字符
* @return a random char with the range ASCII 33(!) to ASCII 126(~)
*/
public static char getRandomChar()
{
// from ASCII code 33 to ASCII code 126
int firstChar = 33; // "!"
int lastChar = 126; // "~"
char result = (char) (getRandomInt(firstChar, lastChar + 1));
return result;
}
/**
* 得到随机长度字符串
* @param length the length of the String
* @return a String filled with random char
*/
public static String getRandomString(int length)
{
// include ASCII code from 33 to 126
StringBuffer result = new StringBuffer();
for (int i = 0; i < length; i++)
{
result.append(getRandomChar());
}
return result.toString();
}
}
java经典算法_035
最新推荐文章于 2024-10-31 16:16:13 发布