2017-11-14 8 views
0

주어진 날마다 숫자를 계산하고 싶습니다. 실제 숫자는 중요하지 않지만 다소 차이가 있지만 안정적이어야합니다.숫자가 올바르게 추가되지 않았습니다.

now = new Date(); 

begin_of_week = new Date(now.getFullYear(), now.getMonth(), now.getDate() - now.getDay() + 1); 

for (idx in [0, 1, 2, 3, 4]) { 
    seed = parseInt(idx) 
     + begin_of_week.getFullYear() * 400, 
     + begin_of_week.getMonth() * 31, 
     + begin_of_week.getDate(); 

    // ... 
} 

내가이 나에게 월요일부터 금요일까지 각 요일에 대한 몇 가지 seed를 제공 것으로 예상 :

그래서 나는 지금까지 다음 했어요. 그러나, 나는 다른 날 동안의 숫자 그러나 지난 주와 같은 수를 가지고있다.

JavaScript의 유형 시스템은 나에게 신비입니다. 나는 그것들이 모두 int이고 그것들이 단지 더해질 것이라고 기대할 것이다. idx을 체인의 시작 부분이나 끝 부분에 놓을 지 여부가 달라집니다. 그리고 아무것도하지 않아도되는 parseInt은 실제로 결과를 변경합니다.

여기에 무슨 일이 일어나고 있습니까? 어떻게 그 번호를 추가 할 수 있습니까?

+0

여기에 'parseInt'가 필요 없습니다. 배열에 대해 열거 형을 사용하지 말아야합니다! (https://stackoverflow.com/q/500504/1048572) – Bergi

+0

그런데 for ... in은 루프 변수를 문자열로 만듭니다. 이것은 물론 그것을 설명합니다! –

+1

또한 '400'과 '31'이후의 쉼표가 문제입니다. 나는 그들이 어떻게 거기에 갔는지는 모르지만 이것은 물론 문제이다. –

답변

0

월요일부터 금요일까지 에서 주간 매일 시드가 제공되기를 기대합니다. 그러나, 나는 다른 숫자를 위해 일한다. 그러나 나는 지금 에 지난 주와 같은 수를 가지고있다. 당신은 기본적으로 날짜 매개 변수가 항상 일의 수에 의해 offset'ed 입니다 이미 전달을 보장

now.getDate() - now.getDay() + 1 

을 준대로 begin_of_week이 전체 일주일 동안 같은 될 것입니다 때문에

입니다 주.

저는 모든 사람들이 int이고 그들이 더해질 것이라고 기대합니다.

당신은 다른 값으로 seed 값을 증가보다는 종자 값을 할당 , 그래서 이것은 당신이 seed 값을 증가 유지하려는 경우, 사용 좋은

seed = parseInt(4) 
     + begin_of_week.getFullYear() * 400, 
     + begin_of_week.getMonth() * 31, 
     + begin_of_week.getDate(); 

과 같다 += 대신 =

+0

'seed'에 명시 적으로'idx'를 추가하여 그 요일마다 다른 것을 얻습니다. 나는'+ ='에 대한 필요성을 보지 못했다. –

+0

idx 값은 요일마다 다릅니다. – gurvinder372

+0

나의'idx' 값 *은 요일입니다. 아마도 오해는 이것입니다. 저는 일주일 안에 안정적인 의사 난수 다섯 개를 생성하고 싶습니다. 이 5 개의 숫자는 일주일에 5 일간의 근무일을 나타냅니다. 다음 주에 5 개의 새로운 번호가 필요합니다. –

관련 문제