저는 25-50 년 전에 생년월일의 임의의 생년월일 작성기를 작성하려고합니다. 자바 1.4에 붙어있어 java.util.Calendar (예, 그렇습니다. Joda 라이브러리를 사용해야합니다.)를 통해이를 수용하려고 시도하고 있습니다.임의 생성기 생성기의 임의의 문제는 무엇입니까?
private static long ONE_YEAR_AS_MILLISECONDS = 365*24*60*60*1000;
private static long TWENTY_FIVE_YEARS_AS_MILLISECONDS = 25*ONE_YEAR_AS_MILLISECONDS;
private static long FIFTY_YEARS_AS_MILLISECONDS = 50*ONE_YEAR_AS_MILLISECONDS;
private static String generateDOB()
{
//Equation for calculating a random number within a given range is as follows: Min + (int)(Math.random() * ((Max - Min) + 1))
long someTimeBetween25And50YearsInMilliSeconds = TWENTY_FIVE_YEARS_AS_MILLISECONDS +
(long)(Math.random() * ((FIFTY_YEARS_AS_MILLISECONDS - TWENTY_FIVE_YEARS_AS_MILLISECONDS) + 1));
Calendar dob = Calendar.getInstance();
dob.setTimeInMillis(dob.getTimeInMillis() - someTimeBetween25And50YearsInMilliSeconds);
StringBuffer sb = new StringBuffer();
sb.append(dob.get(Calendar.YEAR)).append("/").append(dob.get(Calendar.MONTH)+1).append("/").append(dob.get(Calendar.DAY_OF_MONTH));
return sb.toString();
}
그것은 확인을 실행하지만 100 날짜의 출력이 2008 또는 2009 중 하나에서 모두를 yeilds : 내가 어디에 있어요 여기 그러나
2008/10/8
2008/9/22
2008/7/26
2008/8/20
2008/3/31
2008/10/1
2009/1/3
2009/2/2
2009/4/9
2008/9/20
...
, 나는 25-50 사이의 날짜가 필요 여러 해 전에. 내가 뭘 놓치고 있니?
을 사용 년. 25 년 후에는 3 일이 지나면 범위가 25-50 년이되지 않으며 3-7 일간의 오류 창이 발생합니다. – McKay