for i in range(len(revNumbers[0])):
line = ""
for j in range(len(revNumbers)):
value = int(revNumbers[j][i])
line += str(value) + ","
NumberInfoCount[value-1] = int(NumberInfoCount[value-1]) + 1
print(str(i + 1) + "회차:" + line )
print(NumberInfoCount)
1부터 45번호까지 루프를 확인하며 저장된 당첨 정보를 각 번호에 카운트하여 저장하는 로직입니다.
출력 결과 1부터 45번까지 카운트가 계산되어 배열이 저장됩니다.
이제 파이썬 차트에 사용할 x, y 모든 정보가 생성되었습니다.
x = np.arange(45)
plt.bar(x,NumberInfoCount)
plt.xticks(x, NumberXInfo)
plt.show()
np.arange()를 사용해서 파이썬 차트 x 정보를 저장합니다.
bar() 함수를 사용해서 x 측 정보를 저장합니다.
마지막으로 xticks() 함수를 사용해서 y 측 정보를 저장합니다.
show() 함수를 사용해서 파이썬 차트를 출력합니다.
출력 결과 1부터 45번까지 당첨된 횟수를 모두 확인할 수 있습니다.
966회 차 기준으로 43 번호가 가장 많이 당첨되었습니다.
파이썬(python) 차트는 4줄 코딩으로 바로 출력이 가능합니다.
일반적인 언어에서는 차트하나 개발하기가 정말 어렵지만, 파이썬(python)에서는 손쉽게 출력됩니다.
"drawable"에 저장된 45개의 이미지를 한 번에 로드해서 BallList에 등록하는 코드입니다.
getResources()를 사용해서 저장된 정보 ID를 추출할 수 있습니다.
처음 저장된 이름을 순차적으로 저장하면 for문을 사용해서 한번에 ID를 추출해서 BITMAP을 생성할 수 있습니다.
생성된 BITMAP은 크기를 지정해서 BallList에 "add"함수를 사용해서 저장합니다.
Toast.makeText(this@MainActivity, "Create lottovall image.", Toast.LENGTH_SHORT).show()
for( i in 0..44)
{
var bmp : Int = getResources().getIdentifier("lottoball" + (i + 1), "drawable", packageName )
var bitmap:Bitmap = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), bmp),
70,70, false)
BallList.add(bitmap)
}
상단 Toast 메시지는 실행 구간을 확인하기 위해서 추가했습니다.
이제 저장된 45개의 이미지를 랜덤 하게 생성해서 이미지를 저장해보겠습니다.
먼저 버튼 클릭 이벤트를 설정합니다.
코틀린은 JAVA와 다르게 매우 직관적으로 클릭 이벤트를 설정할 수 있습니다.
val btn : Button = findViewById<Button>(R.id.btStart)
btn.setOnClickListener{
Toast.makeText(this@MainActivity, "button start.", Toast.LENGTH_SHORT).show()
var set: TreeSet<Int> = TreeSet()
while(set.size < 6){
val random = Random()
val num = random.nextInt(45)
set.add(num)
}
버튼 ID를 확인하고 setOnClickListener 함수를 설정해줍니다.
랜덤 번호는 겹치면 안 되기 때문에 TreeSet 이진 검색을 사용해서 저장해주세요.
코틀린은 JAVA와 동일한 알고리즘 클래스를 사용할 수 있습니다.
마지막으로 랜덤으로 설정된 6개의 번호를 ImgView와 연결해줍니다.
Toast.makeText(this@MainActivity, "ball check.", Toast.LENGTH_SHORT).show()
var nCount = 0
for( i in set )
{
var tmpID : Int = getResources().getIdentifier("ballView" + (nCount + 1),
"id", packageName )
val imgView = findViewById<ImageView>(tmpID)
imgView.setImageBitmap(BallList.get(i))
nCount++
}
Toast.makeText(this@MainActivity, "button end.", Toast.LENGTH_SHORT).show()
for문을 사용해서 저장된 Treeset 이미지 번호를 전역 저장된 BallList에서 확인합니다.