2016-07-15 2 views
0

첫째로 쓰는 언어 Im은 노드 (자바 스크립트)이지만 실제로 컴퓨터 과학을 찾고있는 Im, 실제로 코드를 작성하는 방법.시드/키로부터 큰 배열/데이터 만들기

기본적으로 내가 가지고있는 것은 2,000 x 2,000 2 차원 배열입니다 (즉, 2,000 개의 항목이있는 긴 배열의 모든 항목에는 2,000 개의 항목이 있음). 이 배열 안에는 값 0, 1, 2 3 등이 있습니다. 각기 다른 간격으로 배열되어 있으며 각 배열의 공통점에 대해 다른 희귀 성이 있습니다. 내가 뭘하고 싶은 건, 키를 기반으로이 배열을 생성하는 것입니다. idc는 키/시드가 얼마나 오래되는지, 작업을 완료 할 수있는 적당한 길이입니다. 동일한 키가 동일한 키이고 다른 키가 다른 경우 동일한 키를 원한다면 동일한 배열을 생성해야합니다. 기본적으로 키를 가져 와서 더 긴 데이터를 생성하지만 인식 할 수없는 패턴이이 데이터에 나타나지 않습니다.

내 생각에 배열의 위치를 ​​얻기 위해 여러 상수에 대해 곱하는 일종의 십진수 인 키를 사용하는 것이지만 tbh에는 시작할 아이디어가 없습니다. 본질적으로 그것은 마치 민병예가 씨앗을 가져 와서 그것을지도로 만들고 동일한 씨앗이 다시 동일한 맵을 생성하는 것과 같습니다.

+0

필요성을 설명하기 위해 예제를 삽입 할 수 있습니까? –

답변

1

시드 할 수있는 임의의 난수 생성기 (RNG)는 주어진 시드에 대해 동일한 일련의 임의 값을 제공합니다. &에는 결정 가능한 패턴이 없어야합니다. 불행하게도, the default RND for javascript is not seedable; 이 SE 게시물에 따라 you will need to write your own or use a someone else's.

일단 시드가 가능한 RNG가 있으면 각 입력에 대해 임의의 값 &을 먼저 가져온 다음 임의의 값을 원하는 출력 값으로 변환합니다. 전환을 수행하는 여러 가지 방법이 있습니다. 이것은이 70 %, 20 %, 7 % & 3 %가 1, 2를 얻을 수 있습니다

if(rand_value <= 70){ 
    output_value = 1; 
} 
else if(rand_value <= 90){ 
    output_value = 2; 
} 
else if(rand_value <= 97){ 
    output_value = 3; 
} 
else { 
    output_value = 4 
} 

: 당신은 단지 몇 가지가 있다면, 나는 이런 식으로 뭔가를 할 것 (random_value 1 & 0 사이에 가정) , 각각 3 또는 4이고; 필요에 따라 값을 조정하십시오. 참고 : 출력 값이 많은 경우 커다란 if else 블록보다 더 깔끔한 해결 방법이 있으므로이를 반영하여 질문을 편집해야합니다.

+0

고맙습니다. 시드 된 난수 생성기가 무엇인지 혼란스러워했지만 지금은 정확히 내가 필요한 것을 알고 있습니다. – Ralph