나는 사용자가 빈의 수를 입력해야하는 프로젝트를 가지고있다. 이 숫자의 범위는 0에서 1000 사이입니다. 예를 들어 사용자가 10을 선택하면 다음 단계는 배열에서 가장 높은 값을 확인하는 것입니다. 배열은 숫자 값을 포함합니다. 다음은 예입니다 :빈을 동적으로 만드시겠습니까?
<cfset myArray = [5,45.74,9,21,88.78,33.56,12]>
배열에서 가장 높은 값을 찾아야합니다. 예를 들어 위의 배열에서 가장 높은 값은 88.78입니다. 이 값을 89로 반올림 할 수 있습니다. 그런 다음 가장 높은 값을 빈 수로 나눕니다. 그러면 각 빈의 너비를 설정할 수 있습니다. 예 :
<!--- *** Get the highest value in an array. Based on the max value in the array we will now how many bins we need. *** --->
<cfset maxBinVal = Round(arrayMax(myArray))>
<!--- *** This value can be changed. Depends how many bins user wants. *** --->
<cfset numberOfBins = 10>
<!--- *** Divide highest value in the array with the number of bins. *** --->
<cfset binWidth = maxBinVal/numberOfBins>
<!--- *** Loop stops before hits the highest value. Increment for binWidth to include the highest value. *** --->
<cfset maxVal = maxBinVal + binWidth>
<cfset arrayOfBins = arrayNew(1)>
<cfloop from="#binWidth#" to="#maxVal#" step="#binWidth#" index="i">
<cfset arrayAppend(arrayOfBins,#i#)>
</cfloop>
<cfloop array="#arrayOfBins#" index="key">
<cfoutput>Bin Point: #key#<br></cfoutput>
</cfloop>
출력 : I 빈들을 생성 한 후이
Bin Point: 8.9
Bin Point: 17.8
Bin Point: 26.7
Bin Point: 35.6
Bin Point: 44.5
Bin Point: 53.4
Bin Point: 62.3
Bin Point: 71.2
Bin Point: 80.1
Bin Point: 89
다음 단계는 적절한 빈/myArray
어레이에서 각각의 값을 배치한다. 이것은 까다 롭고 나는이 문제에 대한 최선의 접근법/해결책이 무엇인지 모르겠습니다. 빈의 수를 고정/항상 동일하면이 방법이 더 쉬울 것입니다. 이 경우 myArray
을 반복하고 어떤 bin 값이 속해 있는지 확인해야합니다. 다음은 예이다 :
<cfif 5 LTE 8.9>
<cfset arrayAppend(array1, 5)>
<cfelseif 5 GT 8.9 AND 5 LTE 17.8>
<cfset arrayAppend(array2, 5)>
<cfelseif ...>
등등 ...
기본적 I 범위 값이 속하는 체크하고 value position in an array
(예 5에서 myArray의 위치 1이 있는지 추가해야하므로 I는 추가 할
빈 크기는 가장 높은 값과 가장 낮은 값의 * 차이 *를 기준으로 설정해야합니다. 가장 높은 가치에 기초를 둔다면 잠재적으로 빈 덩어리로 끝날 것입니다. –