2013-02-26 3 views
1

이것은 무작위 화를 조작하는 모든 사람들에게 좋은 질문입니다. Android에서 앱을 만들고 있습니다. 이 응용 프로그램을 위해, 나는 다음과 같은 조건의 임의 값을 생성해야합니다매일 "정적"무작위 값 집합을 얻으십시오

  • 내가 13 개 임의의 값

  • 를 생성해야 내가 매일이 13 개 임의의 값의 새로운 세트를 얻을 필요 (기반 사용자 장치의 시스템에서). 하루 종일이 값은 변하지 않아야합니다.

  • 이 값을 로컬로 생성해야합니다. 즉, 사용자가 온라인에 값을 얻기 위해 인터넷에 연결할 수 없습니다.

  • 어려운 부분은 다음과 같습니다. 사용자 1이 가져 오는 13 개의 임의 값은 사용자 2가 가져 오는 13 개의 값과 동일해야합니다.

  • 각 값은 자신의 범위가

용액에 대한 내 첫 번째 가설에서 날짜 값의 조합을 사용한다 (일부는 [1-100]되며 기타 [1-40] 임)은 장치 시스템 (일, 년, 월, 일 등)은 모든 사용자에 대해 동일하므로 1 시간 동안 13 개의 값을 동일하게 유지해야하기 때문에 시간, 분 또는 초를 사용할 수 없습니다 (장치 시스템을 기준으로 다음 날에만 변경됩니다).

나는 당신의 생각을 읽고 싶습니다.

감사

편집 : 값이 시간대와 다른 경우가 괜찮습니다.

+0

각 시스템이 장치의 시스템을 기반으로하는 경우 각 사용자는 어떻게 고유 값을 얻을 수 있습니까? – akaya

+1

하지만 시간대 차이 (또는 재미/해킹) 때문에 사용자가 시스템에서 동일한 날짜를 사용하지 않으면 어떻게됩니까? –

+0

@kaya : 오늘 날짜를 결정하는 데 시스템 데이터를 사용해야하며 그 외에는 아무 것도 없습니다. – Don

답변

2

일반적으로 사용되는 숫자는 pseudorandom입니다. 이것은 주어진 시드에 대해 예측 가능하다는 것을 의미합니다. 씨앗을 특정 시점 이후의 일수와 동일하게 설정할 수 있습니다. 예를 들어, 이후 1 January 1970. 그런 다음 13 개의 의사 난수 값을 가져옵니다. 그 날 모든 장치에서 모두 동일합니다. 다음 날 시드 +1을 사용하여 또 다른 Random을 만들고 13 개의 의사 난수 값 등을 취합니다.

+0

분명히 좋은 생각 인 Adam처럼 보입니다.하지만 +1을 매일 추가하면 가치가 올라 가게되지는 않습니까? 어느 날부터 다른 트렌드에 빠지는 느낌을 피할 필요가 있습니다 – Don

+0

@Kintaro 값에 추세가 없으므로 시드 값을 시드에 추가합니다. 시드 값은 중요하지 않습니다. 예를 들어 http://en.wikipedia.org/wiki/Random_seed를 확인하십시오 –

+0

물론 시드 값은 변경해야합니다. 귀하의 답변을 주셔서 감사합니다, 이것은 내가 구현 한 것입니다 그리고 그것은 몇 가지 테스트와 함께 작동하는 것 – Don

0

당신이 생각하는 것은 아마도 가장 직접적인 접근법 일 것입니다. 단순한 씨앗은 대부분의 것들에 좋을 것입니다.

Calendar cal = new GregorianCalendar(); 
cal.set(Calendar.HOUR_OF_DAY, 0); 
cal.set(Calendar.MINUTE, 0); 
cal.set(Calendar.SECOND, 0); 
cal.set(Calendar.MILLISECOND, 0); 
long seed = cal.getTime().getTime(); 
관련 문제