2017-10-18 15 views
-4

매일 임의의 정수 값을 생성하는이 코드를 만들었습니다. 그래서 오늘 rand()는 내가 호출 할 때마다 3을 반환 할 것이고, 내일은 다른 값을 생성합니다. C++ 임의의 주간 정수를 생성하는 방법

std::vector<MyObject> myList = getMyList(); 
    time_t t = time(NULL); 
    tm *lt = localtime(&t); 
    int seed = lt->tm_mday + lt->tm_mon + 1 + lt->tm_year + 1900; 
    srand(seed); 
    dailyRand=rand(); 
    int selectedID=rand() % myList.size(); 
    MyObject obj = myList.at(selectedID); 

지금 내가 대신 매주 랜드를 생성하기 위해 노력하고있어,하지만 다음 때까지, 00:00 화요일에 변경하고 전체 주 동안 동일하게 유지.

불행히도 아직 해결책을 찾지 못했습니다. 누군가 나를 도울 수 있습니까?

UPDATE :

내 시도 (그리고 아마도 솔루션?) : 그것은 1990년 1월 1일은 월요일과 내가 필요했다 +1 때문 년 0 (이후의 일 수를 얻어야한다

seed = trunc((lt->tm_yday + (lt->tm_year * 365)+1)/7); 
srand(seed); 
rand(); 

대신 화요일), 7로 나누면 화요일부터 시작하여 1900 년부터 주 번호를 알려줘야합니다. 하지만 난 어떤 값을 시도하고

업데이트 2 : 나는 당신이 특정 시간에 따라 변하는 값을 찾고 있습니다

time_t t = time(NULL); 
    tm *lt = localtime(&t); 
    int firstTuesday = 432000; // Tuesday 1970/01/06 at 00:00 
    int seed = (((t - firstTuesday)/60/60/24))/7; 
    srand(seed); 
    int r=rand(); 
+1

"_i가 해결책을 찾지 못했습니다." "적어도 뭔가 해봤습니까? 귀하의 필요에 부합하지 않는 이유에 대한 설명과 함께 귀하의 시도를 보여주십시오. –

+1

주간 솔루션을 확장 할 때 어떤 문제점이 있습니까? –

+1

http://idownvotedbecau.se/noattempt/ – Oleg

답변

1

응답 @mksteve 다음 달성했습니다.

이 방법을 사용하는 가장 쉬운 방법은 나에게 맞는 시간을 갖는 것입니다.

정확하게 정확한 시간에 1970 년 1 월에 화요일을 계산하십시오.

그런 다음 현재 time_t에서 제거하십시오. 그러면 그 시간 이후로 초가 나옵니다.

24 화요일 * 60 * 60 * 7로 나누어 화요일마다 반복되는 값을 구하십시오.

+0

제안 사항을 따르고 코드가 완벽하게 작동합니다. 고맙습니다! 첫 번째 소식을 업데이트하겠습니다. – Joseph