티스토리 뷰

💼 정보 ver1.0

유용한 랜덤 메서드

James Wetzel 2013. 9. 8. 13:34
728x90
반응형

package Random;

import java.util.HashSet;


public class Ex3 {

/**

* from ~ to 사이의  난수 값을 배열에 담아 반환한다.

* @param arr

* @param from

* @param to

* @return

*/

public int[] FillRand(int[] arr, int from, int to)

{

for(int i = 0; i < arr.length; i++)

{

arr[i] = getRandom(from, to);

}

return arr;

}

/**

* data에 주어진 값 중에서 랜덤으로 값을 반환한다. 

* @param arr

* @param data

* @return

*/

public int[] FillRand(int[] arr, int[] data)

{

for(int i = 0; i < arr.length; i++)

{

arr[i] = data[getRandom(0, data.length - 1)];

}

return arr;

}

/**

* data에 주어진 값 중에서 중복 없이 랜덤으로 값을 반환한다.

* @param arr

* @param data

* @return

*/

public String[] FillDistinctRand(String[] arr, String[] data)

{

if(arr.length <= 0 || data.length <= 0) return arr;

HashSet<String> hs = new HashSet<String>(arr.length);

while(hs.size() < Math.min(arr.length, data.length))

{

hs.add(data[getRandom(0, data.length - 1)]);

}

Object[] temp = hs.toArray();

for(int i = 0; i < temp.length; i++)

{

arr[i] = temp[i].toString();

}

return arr;

}

/**

* from ~ to 사이의  난수 값을 반환한다.

* @param from

* @param to

* @return

*/

private int getRandom(int from, int to)

{

return (int)(Math.random() * (Math.abs(to - from) + 1)) + Math.min(from, to);

}

}



728x90
반응형