Skip to content

zerojat7-ui/LibraryJS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

53 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

CubeEngine - ๋ฒ„์ „ ํžˆ์Šคํ† ๋ฆฌ

Hybrid Cube Evolution ร— ML Probability Engine
๋ฒ”์šฉ ํ™•๋ฅ  ๊ธฐ๋ฐ˜ ์กฐํ•ฉ ์ถ”์ฒœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ


๐Ÿ“‹ ๋ชฉ์ฐจ


์ตœ์‹  ๋ฒ„์ „ (v2.5.1)

๋ฆด๋ฆฌ์ฆˆ: 2026-02-17

์ฃผ์š” ๊ธฐ๋Šฅ

๐Ÿ’พ ๋ฐฑํ…Œ์ŠคํŒ… ์ฒดํฌํฌ์ธํŠธ ์˜๊ตฌ ์ €์žฅ (window.storage)

  • ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋‚˜๊ฐ”๋‹ค ๋Œ์•„์™€๋„ ์ค‘๋‹จ๋œ ์ง€์ ์—์„œ ์ด์–ด์„œ ์ง„ํ–‰
  • 50ํšŒ ์ฒญํฌ ์™„๋ฃŒ๋งˆ๋‹ค window.storage์— ์ž๋™ ์ €์žฅ
  • ํŽ˜์ด์ง€ ๋กœ๋“œ ์‹œ ์ €์žฅ๋œ ์ฒดํฌํฌ์ธํŠธ ์ž๋™ ๊ฐ์ง€ ๋ฐ ๋ณต์›
  • ๋ณต์› ์‹œ ๋ฐฑํ…Œ์ŠคํŒ… ํŒจ๋„ ์ž๋™ ํ‘œ์‹œ + [โ–ถ ๊ณ„์†] ๋ฒ„ํŠผ ์ฆ‰์‹œ ํ™œ์„ฑํ™”
  • ์ฒ˜์Œ๋ถ€ํ„ฐ ์žฌ์‹œ์ž‘ / ์ „์ฒด ์™„๋ฃŒ ์‹œ ์ฒดํฌํฌ์ธํŠธ ์ž๋™ ์‚ญ์ œ

์ €์žฅ ํ•ญ๋ชฉ

ํ•ญ๋ชฉ ์„ค๋ช…
currentProbMap ์ค‘๋‹จ ์‹œ์ ์˜ ํ™•๋ฅ ๋งต
cumulativeHistory ๋ˆ„์  ๋‹น์ฒจ ๋ฒˆํ˜ธ ์ด๋ ฅ
cumulativeBonus ๋ˆ„์  ๋ณด๋„ˆ์Šค ๋ฒˆํ˜ธ ์ด๋ ฅ
nextIdx ๋‹ค์Œ ์‹คํ–‰ํ•  testDraws ์ธ๋ฑ์Šค
TRAIN_UNTIL ์ดˆ๊ธฐ ํ•™์Šต ๊ฒฝ๊ณ„ ํšŒ์ฐจ
totalProcessed ์ „์ฒด ์ฒ˜๋ฆฌ ํšŒ์ฐจ ์ˆ˜
repeatRound ์ „์ฒด ๋ฐ˜๋ณต ํšŸ์ˆ˜
btStats ์ ์ค‘ ํ†ต๊ณ„ (6๊ฐœ/5๊ฐœ/4๊ฐœ/3๊ฐœ/2๊ฐœ ์ดํ•˜)
btAutoNext ์ž๋™ ๊ณ„์† ์ฒดํฌ๋ฐ•์Šค ์ƒํƒœ
btRepeat ์ž๋™ ๋ฐ˜๋ณต ์ฒดํฌ๋ฐ•์Šค ์ƒํƒœ

allDraws(์ „์ฒด ๋‹น์ฒจ ์ด๋ ฅ)๋Š” ์šฉ๋Ÿ‰ ์ ˆ์•ฝ์„ ์œ„ํ•ด ์ €์žฅํ•˜์ง€ ์•Š๊ณ , ์ด์–ด๊ฐ€๊ธฐ ์‹œ Firebase์—์„œ ์ž๋™ ์žฌ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.


์ฃผ์š” ๋งˆ์ผ์Šคํ†ค

๋ฒ„์ „ ๋‚ ์งœ ํ•ต์‹ฌ ๋ณ€ํ™”
v2.5.2 2026-02-17 ๋ฐฑํ…Œ์ŠคํŒ… ๋งค ํšŒ์ฐจ ์ž๋™ ์ €์žฅ + ๋กœ๋˜ ์›น ์ ์šฉ ๋ถ„๋ฆฌ
v2.5.1 2026-02-17 ํŠธ๋ Œ๋“œ ์œˆ๋„์šฐ ์ถ•์†Œ (100โ†’60/20ํšŒ) + ๋ฐฑํ…Œ์ŠคํŒ… ์ฒดํฌํฌ์ธํŠธ ์˜๊ตฌ ์ €์žฅ
v2.5.0 2026-02-16 5์ข… ์ง€ํ‘œ ํŠธ๋ Œ๋“œ ํ•™์Šต + ๋ฐฑํ…Œ์ŠคํŒ… ์ฒดํฌํฌ์ธํŠธ
v2.4.0 2026-02-16 6์ข… ํŠธ๋ Œ๋“œ ์ „๋ฉด ๋ฐ˜์˜ (ํ™€์ง/AC/์—ฐ์†/๋์ˆ˜/ํ•ฉ/๊ณ ์ €)
v2.3.0 2026-02-16 ์ƒ‰์ƒ ๊ตฌ์—ญ ํŠธ๋ Œ๋“œ (zoneTrend) ๋ฐ˜์˜
v2.2.4 2026-02-16 ๐Ÿ”ฅ Firebase ๋ธ”๋ Œ๋”ฉ ๊ตฌ์กฐ ๊ทผ๋ณธ ์ˆ˜์ • (๋ˆ„์  ๊ณ ์ฐฉ ํ•ด๊ฒฐ)
v2.2.1 2026-02-16 ๋ฒˆํ˜ธ ์ ๋ฆผ ๋ฒ„๊ทธ ์ˆ˜์ • (probMap ๋™์  ๊ฐฑ์‹  ์ œ๊ฑฐ)
v2.1.0 2026-02-16 StatCache + WeightedProb + historySet O(1) ์ตœ์ ํ™”
v2.0.0 - ๊ตฌ์กฐ ๊ฐœํŽธ (Firebase ์—ฐ๋™, excludeNumbers, ์ ์‘ํ˜• ํ•™์Šต)
v1.0.0 - ์ตœ์ดˆ ๋ฆด๋ฆฌ์ฆˆ (๋ฒ”์šฉํ™”, ํ”„๋ฆฌ์…‹, ์ฝœ๋ฐฑ)

์ƒ์„ธ ๋ฒ„์ „ ํžˆ์Šคํ† ๋ฆฌ

v2.5.x - 5์ข… ์ง€ํ‘œ ํŠธ๋ Œ๋“œ ํ•™์Šต

v2.5.2 (2026-02-17)

๋ฐฑํ…Œ์ŠคํŒ… (index.html)

๋งค ํšŒ์ฐจ ์ž๋™ ์ €์žฅ + ๋กœ๋˜ ์›น ์ ์šฉ ๋ถ„๋ฆฌ

๋ฌธ์ œ์ 

  • ๊ธฐ์กด: 50ํšŒ ๋‹จ์œ„ ์ €์žฅ โ†’ ์ค‘๊ฐ„์— ๋ธŒ๋ผ์šฐ์ € ์ข…๋ฃŒ ์‹œ ์ตœ๋Œ€ 50ํšŒ ์†์‹ค
  • ๊ธฐ์กด: ๋ฐฑํ…Œ์ŠคํŒ… ๊ฒฐ๊ณผ๊ฐ€ ์ž๋™์œผ๋กœ ๋กœ๋˜ ์›น์— ์ ์šฉ โ†’ ์˜๋„์น˜ ์•Š์€ ๋ฎ์–ด์“ฐ๊ธฐ ์œ„ํ—˜

๋ณ€๊ฒฝ์‚ฌํ•ญ

์ €์žฅ ๊ตฌ์กฐ ์™„์ „ ๋ถ„๋ฆฌ

์šฉ๋„ Firebase ๋ฌธ์„œ ์ €์žฅ ์‹œ์  ์„ค๋ช…
๋ฐฑํ…Œ์ŠคํŒ… ์ง„ํ–‰๋„ backtest_progress ๋งค ํšŒ์ฐจ๋งˆ๋‹ค ์ž๋™ ์ค‘๋‹จ ํ›„ ์žฌ๊ฐœ์šฉ (๋…๋ฆฝ์ )
๋กœ๋˜ ์›น ํ•™์Šต shared_engine_state ์ˆ˜๋™ (๋ฒ„ํŠผ ํด๋ฆญ) ์‹ค์ œ ๋กœ๋˜ ์›น ์ ์šฉ์šฉ

๋งค ํšŒ์ฐจ ์ž๋™ ์ €์žฅ

  • ๋ชจ๋“  ํšŒ์ฐจ ์‹คํ–‰ ํ›„ ์ฆ‰์‹œ Firebase + ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€ ์ €์žฅ
  • ์ €์žฅ ๋‚ด์šฉ: currentProbMap, cumulativeHistory, cumulativeBonus, nextIdx, btStats ๋“ฑ
  • ๋ธŒ๋ผ์šฐ์ € ์ข…๋ฃŒ ์‹œ ๋ฐ์ดํ„ฐ ์†์‹ค 0%
  • ๋ฉ€ํ‹ฐ ๋””๋ฐ”์ด์Šค ์ง€์› (PC โ†’ ์Šค๋งˆํŠธํฐ โ†’ ํƒœ๋ธ”๋ฆฟ ์ž์œ ๋กญ๊ฒŒ ์ด๋™)

์ž๋™ ๋ณต์› (ํŽ˜์ด์ง€ ๋กœ๋“œ ์‹œ)

โ‘  Firebase์—์„œ backtest_progress ๋กœ๋“œ ์‹œ๋„
โ‘ก ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€์—์„œ ์ฒดํฌํฌ์ธํŠธ ๋กœ๋“œ ์‹œ๋„  
โ‘ข ๋‘˜ ์ค‘ ์ตœ์‹  ๊ฒƒ ์ž๋™ ์„ ํƒ (savedAt ๋น„๊ต)
โ‘ฃ BT_STATE ๋ณต์›
โ‘ค "โ–ถ ์ค‘๋‹จ๋œ ์ง€์ ๋ถ€ํ„ฐ ๊ณ„์†" ๋ฒ„ํŠผ ํ‘œ์‹œ

๋กœ๋˜ ์›น ์ ์šฉ (์ˆ˜๋™)

  • "โœ… ๋กœ๋˜ ์›น์— ์ ์šฉ" ๋ฒ„ํŠผ ์ถ”๊ฐ€
  • ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•  ๋•Œ๋งŒ ๋ฐฑํ…Œ์ŠคํŒ… ๊ฒฐ๊ณผ๋ฅผ ๋กœ๋˜ ์›น์— ๋ฐ˜์˜
  • backtest_progress โ†’ shared_engine_state 50:50 ๋ณ‘ํ•ฉ
  • ์ž๋™ ์ ์šฉ ์•ˆ ๋จ โ†’ ์‹ค์ˆ˜๋กœ ๋ฎ์–ด์“ธ ์œ„ํ—˜ ์ œ๊ฑฐ

UI ๋ณ€๊ฒฝ

  • โŒ ์ œ๊ฑฐ: "50ํšŒ๋งˆ๋‹ค ์ž๋™ ๊ณ„์†" ์ฒดํฌ๋ฐ•์Šค (๋ถˆํ•„์š”)
  • โœ… ์œ ์ง€: "์ „์ฒด ์™„๋ฃŒ ์‹œ ์ž๋™ ๋ฐ˜๋ณต" ์ฒดํฌ๋ฐ•์Šค
  • โœ… ์ถ”๊ฐ€: "๐Ÿ’พ ๋งค ํšŒ์ฐจ๋งˆ๋‹ค ์ž๋™ ์ €์žฅ" ์•ˆ๋‚ด ๋ฌธ๊ตฌ
  • โœ… ๋ณ€๊ฒฝ: "โ–ถ ๊ณ„์† (๋‹ค์Œ 50ํšŒ)" โ†’ "โ–ถ ์ค‘๋‹จ๋œ ์ง€์ ๋ถ€ํ„ฐ ๊ณ„์†"

์‚ฌ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค

1. ๋ฐฑํ…Œ์ŠคํŒ… ์‹œ์ž‘ (1,200ํšŒ ์˜ˆ์ •)
2. 300ํšŒ ์ง„ํ–‰ ์ค‘... โ†’ ๋ธŒ๋ผ์šฐ์ € ์ข…๋ฃŒ
3. ๋‹ค์Œ๋‚  ์žฌ์ง„์ž… โ†’ "300ํšŒ์ฐจ๊นŒ์ง€ ์™„๋ฃŒ" ์ž๋™ ๋ณต์›
4. "โ–ถ ๊ณ„์†" ํด๋ฆญ โ†’ 301ํšŒ๋ถ€ํ„ฐ ์ด์–ด์„œ ์ง„ํ–‰
5. 1,200ํšŒ ์™„๋ฃŒ โ†’ ๊ฒฐ๊ณผ ํ™•์ธ
6. ๋งŒ์กฑ์Šค๋Ÿฌ์šฐ๋ฉด "โœ… ๋กœ๋˜ ์›น์— ์ ์šฉ" ํด๋ฆญ
7. ๋กœ๋˜ ์›น์— ํ•™์Šต ๊ฒฐ๊ณผ ๋ฐ˜์˜ ์™„๋ฃŒ!

๊ธฐ๋Œ€ ํšจ๊ณผ

  • โœ… ๋ฐ์ดํ„ฐ ์†์‹ค ์™„์ „ ๋ฐฉ์ง€ (๋งค ํšŒ์ฐจ ์ €์žฅ)
  • โœ… ๋ฉ€ํ‹ฐ ๋””๋ฐ”์ด์Šค ์ž์œ ๋กœ์šด ์ด๋™
  • โœ… ๋ฐฑํ…Œ์ŠคํŒ… โ†” ๋กœ๋˜ ์›น ์™„์ „ ๋ถ„๋ฆฌ
  • โœ… ์˜๋„์น˜ ์•Š์€ ๋ฎ์–ด์“ฐ๊ธฐ ๋ฐฉ์ง€
  • โœ… ์žฅ์‹œ๊ฐ„ ๋ฐฑํ…Œ์ŠคํŒ… ์•ˆ์ „ํ•˜๊ฒŒ ์ˆ˜ํ–‰

v2.5.1 (2026-02-17)

์—”์ง„ (cube-engine.js)

ํŠธ๋ Œ๋“œ ์œˆ๋„์šฐ ์ถ•์†Œ โ€” ์ตœ๊ทผ ๋ณ€ํ™” ๋ฏผ๊ฐ๋„ ์ฆ๊ฐ€

๋ฌธ์ œ์ 

  • ๊ธฐ์กด 50ํšŒ ๋‹จ์œ„ ํŠธ๋ Œ๋“œ ๋ถ„์„์œผ๋กœ ์ธํ•ด ์žฅ๊ธฐ ํŒจํ„ด์— ๊ณ ์ฐฉ
  • ์ตœ๊ทผ 10~20ํšŒ์˜ ๋น ๋ฅธ ๋ณ€ํ™”๋ฅผ ์ถฉ๋ถ„ํžˆ ๋ฐ˜์˜ํ•˜์ง€ ๋ชปํ•จ
  • ์ถ”์ฒœ ๋ฒˆํ˜ธ๊ฐ€ ํŠน์ • ๋ฒ”์œ„์— ์ ๋ฆฌ๋Š” ํ˜„์ƒ ๋ฐœ์ƒ

๋ณ€๊ฒฝ์‚ฌํ•ญ

ํŠธ๋ Œ๋“œ ์ข…๋ฅ˜ ๋ณ€๊ฒฝ ์ „ ๋ณ€๊ฒฝ ํ›„ ๋น„๊ณ 
5์ข… ํŒจํ„ด ํŠธ๋ Œ๋“œ 100ํšŒ (50+50) 60ํšŒ (30+30) ํ™€์ง/AC/์—ฐ์†/๋์ˆ˜/ํ•ฉ/๊ณ ์ €
5์ข… ์ง€ํ‘œ ํŠธ๋ Œ๋“œ 100ํšŒ (50+50) 20ํšŒ (10+10) freq/gap/reHit/bonus
์ƒ‰์ƒ ๊ตฌ์—ญ ํŠธ๋ Œ๋“œ 40ํšŒ (20+20) 40ํšŒ (20+20) ์œ ์ง€

5์ข… ํŒจํ„ด ํŠธ๋ Œ๋“œ (ํ™€์ง/AC/์—ฐ์†/๋์ˆ˜/ํ•ฉ/๊ณ ์ €)

  • ์œˆ๋„์šฐ: 100ํšŒ โ†’ 60ํšŒ
  • ๋น„๊ต: ์ตœ๊ทผ30ํšŒ vs ์ด์ „30ํšŒ
  • ํšจ๊ณผ: ์ค‘๊ธฐ ํŒจํ„ด ๋ณ€ํ™”์— ๋” ๋ฏผ๊ฐํ•˜๊ฒŒ ๋ฐ˜์‘

5์ข… ์ง€ํ‘œ ํŠธ๋ Œ๋“œ (freq/gap/reHit/bonus)

  • ์œˆ๋„์šฐ: 100ํšŒ โ†’ 20ํšŒ
  • ๋น„๊ต: ์ตœ์‹ 10ํšŒ vs ์ด์ „10ํšŒ
  • ๋ธํƒ€ ์ •๊ทœํ™” ์ˆ˜์ •:
    dFreq  = (์ตœ์‹ 10 - ์ด์ „10) / 10  // ๊ธฐ์กด /50
    dGap   = (์ด์ „10 - ์ตœ์‹ 10) / 10  // ๊ธฐ์กด /50
    dReHit = (์ตœ์‹ 10 - ์ด์ „10) / 5   // ๊ธฐ์กด /10
    dBonus = (์ตœ์‹ 10 - ์ด์ „10) / 10  // ๊ธฐ์กด /50
  • ํšจ๊ณผ: ์ตœ๊ทผ ๋‹จ๊ธฐ ๋ณ€ํ™”์— ์ฆ‰๊ฐ ๋ฐ˜์‘

์ตœ์†Œ ํ•„์š” ๋ฐ์ดํ„ฐ

  • 5์ข… ํŒจํ„ด: 60ํšŒ ์ด์ƒ
  • 5์ข… ์ง€ํ‘œ: 20ํšŒ ์ด์ƒ
  • ์ƒ‰์ƒ ๊ตฌ์—ญ: 40ํšŒ ์ด์ƒ

๊ธฐ๋Œ€ ํšจ๊ณผ

  • โœ… ์ถ”์ฒœ ๋ฒˆํ˜ธ ๋‹ค์–‘์„ฑ ์ฆ๊ฐ€
  • โœ… ์ตœ๊ทผ 10~30ํšŒ ๋ณ€ํ™”์— ๋น ๋ฅธ ๋Œ€์‘
  • โœ… ํŠน์ • ๋ฒˆํ˜ธ ์ ๋ฆผ ํ˜„์ƒ ์™„ํ™”
  • โš ๏ธ ๋‹จ๊ธฐ ๋…ธ์ด์ฆˆ ์˜ํ–ฅ ์ฆ๊ฐ€ (๋ณ€๋™์„ฑ ์ƒ์Šน)

๋ฐฑํ…Œ์ŠคํŒ… (index.html)

๋ฐฑํ…Œ์ŠคํŒ… ์ฒดํฌํฌ์ธํŠธ ์˜๊ตฌ ์ €์žฅ (window.storage)

๋ฌธ์ œ์ 

  • BT_STATE๊ฐ€ JavaScript ๋ณ€์ˆ˜๋กœ๋งŒ ์กด์žฌ
  • ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋‚˜๊ฐ€๊ฑฐ๋‚˜ ํƒญ์„ ๋‹ซ์œผ๋ฉด ์ง„ํ–‰ ์ƒํƒœ๊ฐ€ ์ดˆ๊ธฐํ™”๋จ
  • 50ํšŒ ์ฒดํฌํฌ์ธํŠธ์—์„œ ๋ฉˆ์ถ˜ ๋’ค ์žฌ์ง„์ž… ์‹œ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผ ํ–ˆ์Œ

๋ณ€๊ฒฝ์‚ฌํ•ญ

  • window.storage๋ฅผ ์ด์šฉํ•œ ์ฒดํฌํฌ์ธํŠธ ์˜๊ตฌ ์ €์žฅ ๊ตฌ์กฐ ์ถ”๊ฐ€
  • 50ํšŒ ์ฒญํฌ ์™„๋ฃŒ๋งˆ๋‹ค Firebase ์ €์žฅ๊ณผ ๋™์‹œ์— ๋กœ์ปฌ์—๋„ ์ž๋™ ์ €์žฅ
  • ํŽ˜์ด์ง€ ๋กœ๋“œ ์‹œ tryRestoreBtCheckpoint() ์ž๋™ ์‹คํ–‰ โ†’ ์ €์žฅ๋œ ์ƒํƒœ ๋ณต์›

์‹ ๊ทœ ํ•จ์ˆ˜ 4์ข…

ํ•จ์ˆ˜ ์—ญํ• 
saveBtCheckpoint() ์ฒญํฌ ์™„๋ฃŒ๋งˆ๋‹ค window.storage์— ์ƒํƒœ ์ €์žฅ
loadBtCheckpoint() ์ €์žฅ๋œ ์ฒดํฌํฌ์ธํŠธ ์ฝ๊ธฐ
clearBtCheckpoint() ์ฒดํฌํฌ์ธํŠธ ์‚ญ์ œ (์žฌ์‹œ์ž‘ยท์™„๋ฃŒ ์‹œ ์ž๋™ ํ˜ธ์ถœ)
tryRestoreBtCheckpoint() ํŽ˜์ด์ง€ ๋กœ๋“œ ์‹œ ์ž๋™ ๋ณต์› ์‹œ๋„

์ฒดํฌํฌ์ธํŠธ ์‚ญ์ œ ์‹œ์ 

์ƒํ™ฉ ๋™์ž‘
์ฒ˜์Œ๋ถ€ํ„ฐ ์žฌ์‹œ์ž‘ clearBtCheckpoint() ํ›„ ์žฌ์‹œ์ž‘
์ „์ฒด ๋ฐ์ดํ„ฐ ์†Œ์ง„ ์™„๋ฃŒ clearBtCheckpoint() ์ž๋™ ํ˜ธ์ถœ
์ž๋™ ๋ฐ˜๋ณต ๋ชจ๋“œ ๋ฐ˜๋ณต ์ค‘์—๋Š” ์ฒดํฌํฌ์ธํŠธ ์œ ์ง€

v2.5.0 (2026-02-16)

์—”์ง„ (cube-engine.js)

5์ข… ์ง€ํ‘œ ํŠธ๋ Œ๋“œ ๋ถ„์„ ์ถ”๊ฐ€

  • ๋ถ„์„ ๋Œ€์ƒ: freq / recentFreq / gap / reHit / bonus (์ƒ‰์ƒ ์ œ์™ธ)
  • ๋น„๊ต ๋ฐฉ์‹: ์ตœ์‹  50ํšŒ vs ์ด์ „ 50ํšŒ ๊ฐ ์ง€ํ‘œ๋ณ„ ๋ธํƒ€ ๊ณ„์‚ฐ
    • freq delta: ์ตœ์‹ 50 ์ถœํ˜„์ˆ˜ - ์ด์ „50 ์ถœํ˜„์ˆ˜
    • gap delta: ์ด์ „50 ๊ฐ„๊ฒฉ - ์ตœ์‹ 50 ๊ฐ„๊ฒฉ (gap ๊ฐ์†Œ=์ตœ๊ทผ ๊ฐ•์„ธ=์–‘์ˆ˜)
    • reHit delta: ์ตœ์‹ 50 ์žฌ์ถœํ˜„ - ์ด์ „50 ์žฌ์ถœํ˜„
    • bonus delta: ์ตœ์‹ 50 ๋ณด๋„ˆ์Šค ๋นˆ๋„ - ์ด์ „50 ๋ณด๋„ˆ์Šค ๋นˆ๋„
  • ๊ฐ€์ค‘ ํ•ฉ์‚ฐ: freqร—0.30 + recentร—0.30 + gapร—0.20 + reHitร—0.10 + bonusร—0.10
  • ์ •๊ทœํ™”: delta โ†’ 0~1 ๋ฒ”์œ„ (0.5=์ค‘๋ฆฝ, >0.5=๊ฐ•์„ธ, <0.5=์•ฝ์„ธ)
  • ์ ์šฉ: buildWeightedProb ๊ฐ€์ค‘์น˜ 10% ๋ฐ˜์˜
  • ์•ˆ์ „์žฅ์น˜: history 50ํšŒ ๋ฏธ๋งŒ์ด๋ฉด ์ค‘๋ฆฝ๊ฐ’(0.5)์œผ๋กœ ๋ฌดํšจํ™”

๋ฐฑํ…Œ์ŠคํŒ… (index.html)

50ํšŒ ์ฒดํฌํฌ์ธํŠธ ๊ตฌ์กฐ

  • ์ดˆ๊ธฐ ํ•™์Šต: 900ํšŒ ํ•™์Šต ํ›„ 901ํšŒ๋ถ€ํ„ฐ 50ํšŒ ๋‹จ์œ„ ๊ฒ€์ฆ
  • ์ƒํƒœ ์œ ์ง€: BT_STATE (nextIdx / currentProbMap / cumulativeHistory)
  • UI ์ปจํŠธ๋กค:
    • [โ–ถ ๊ณ„์† (๋‹ค์Œ 50ํšŒ)]: ํ˜„์žฌ probMap + cumulativeHistory ์ด์–ด์„œ ์‹คํ–‰
    • [โ†บ ์ฒ˜์Œ๋ถ€ํ„ฐ ์žฌ์‹œ์ž‘]: BT_STATE ์ดˆ๊ธฐํ™” ํ›„ ์žฌ์‹œ์ž‘
    • โ˜‘ 50ํšŒ๋งˆ๋‹ค ์ž๋™ ๊ณ„์†: ์ฒดํฌ ์‹œ 50ํšŒ ์™„๋ฃŒ ํ›„ 0.5์ดˆ ๋Œ€๊ธฐ ํ›„ ์ž๋™ ๊ณ„์†
    • โ˜‘ ๋ฐ์ดํ„ฐ ์†Œ์ง„ ์‹œ ์ž๋™ ๋ฐ˜๋ณต: ์ „์ฒด ์†Œ์ง„ ํ›„ ์ด์ „ probMap ๋ฐ˜์˜ํ•˜์—ฌ ์ž๋™ ์žฌ์‹œ์ž‘
  • ํ•™์Šต ๋ˆ„์ : ๊ฐ ์ฒญํฌ ์™„๋ฃŒ๋งˆ๋‹ค backtest_engine_state ์ €์žฅ, ๋‹ค์Œ ์ฒญํฌ๋Š” ์ด์ „ probMap ๋ฐ˜์˜

v2.4.x - 6์ข… ํŠธ๋ Œ๋“œ ์ „๋ฉด ๋ฐ˜์˜

v2.4.2 (2026-02-16)

5์ข… ํŠธ๋ Œ๋“œ ์œˆ๋„์šฐ ๊ณ ์ •

  • ๊ธฐ์กด: ์ „์ฒด trendHistory๋ฅผ ๋™์ ์œผ๋กœ ๋ฐ˜์œผ๋กœ ๋‚˜๋ˆ” โ†’ ๋ฐ์ดํ„ฐ ์ˆ˜์— ๋”ฐ๋ผ ์œˆ๋„์šฐ ๋ณ€๋™
  • ๋ณ€๊ฒฝ: tHalf = min(50, floor(length/2)) ๊ณ ์ • โ†’ ์ตœ๊ทผ50 / ์ด์ „50
  • ์ƒ‰์ƒ ํŠธ๋ Œ๋“œ๋Š” ์ตœ๊ทผ20/์ด์ „20 ์ ˆ๋Œ€๊ฐ’ ๋ฐฉ์‹ ์œ ์ง€

๋ฐฑํ…Œ์ŠคํŒ… 50ํšŒ ์ค‘๋‹จ/์žฌ๊ฐ€๋™/๋ฐ˜๋ณต

์ƒํ™ฉ ๋™์ž‘
์ตœ์ดˆ ์‹คํ–‰ 900ํšŒ ์ดˆ๊ธฐํ•™์Šต โ†’ 901ํšŒ๋ถ€ํ„ฐ 50ํšŒ ๊ฒ€์ฆ ํ›„ ์ค‘๋‹จ
์žฌ๊ฐ€๋™ ์ค‘๋‹จ ํšŒ์ฐจ๋ถ€ํ„ฐ ์ด์–ด์„œ 50ํšŒ, ์ด์ „ ํ•™์Šต 50:50 ๋ธ”๋ Œ๋”ฉ ๋ฐ˜์˜
๋ฐ˜๋ณต(์ฒดํฌ๋ฐ•์Šค) 900ํšŒ๋ถ€ํ„ฐ ์žฌ์‹œ์ž‘, ์ด์ „ ํ•™์Šต 50:50 ๋ธ”๋ Œ๋”ฉ ๋ฐ˜์˜
๋ฐ์ดํ„ฐ ๋ ๋„๋‹ฌ ์ž๋™์œผ๋กœ ๋ฐ˜๋ณต ์žฌ์‹œ์ž‘ (900ํšŒ๋ถ€ํ„ฐ)
  • BT_RESUME_INDEX: ์ค‘๋‹จ ์œ„์น˜ ์ €์žฅ (-1=์ฒ˜์Œ๋ถ€ํ„ฐ)
  • BT_STEP = 50: 1ํšŒ ์‹คํ–‰๋‹น ๊ฒ€์ฆ ํšŒ์ฐจ ์ˆ˜

v2.4.1 (2026-02-16)

์ƒ‰์ƒ ํŠธ๋ Œ๋“œ ๊ตฌ์กฐ ๊ฐœ์„ 

๋ฌธ์ œ์ 

  • ์ตœ๊ทผ100ํšŒ ์ „๋ฐ˜50/ํ›„๋ฐ˜50 ๋น„์œจ(ratio) ๋ฐฉ์‹
  • ์ „๋ฐ˜ ํ‰๊ท ์ด 0์— ๊ฐ€๊นŒ์šธ ๋•Œ ratio ํญ๋ฐœ์  ์ฆ๊ฐ€ โ†’ ํŽธํ–ฅ ์œ ๋ฐœ
  • 100ํšŒ ์œˆ๋„์šฐ๊ฐ€ ๋„ˆ๋ฌด ๋„“์–ด ์žฅ๊ธฐ ํŒจํ„ด์— ๋Œ๋ ค๋‹ค๋‹˜

๋ณ€๊ฒฝ์‚ฌํ•ญ

  • ์ตœ๊ทผ20ํšŒ / ์ด์ „20ํšŒ ์ ˆ๋Œ€๋ณ€ํ™”๊ฐ’(delta) ๋ฐฉ์‹
    recentAvg = ์ตœ๊ทผ 20ํšŒ ๊ตฌ์—ญ๋ณ„ ํšŒ์ฐจ๋‹น ํ‰๊ท  ์ถœํ˜„์ˆ˜
    prevAvg   = ์ด์ „ 20ํšŒ ๊ตฌ์—ญ๋ณ„ ํšŒ์ฐจ๋‹น ํ‰๊ท  ์ถœํ˜„์ˆ˜
    zoneDelta = recentAvg - prevAvg
      > 0  : ๊ฐ•์„ธ (์ตœ๊ทผ์— ๋” ๋งŽ์ด ์ถœํ˜„)
      < 0  : ์•ฝ์„ธ (์ตœ๊ทผ์— ๋œ ์ถœํ˜„)
      = 0  : ๋ณดํ•ฉ
    
  • ์ •๊ทœํ™”: delta ยฑ1.2 ๊ธฐ์ค€ โ†’ 0~1 clamp (0.5=๋ณดํ•ฉ)
  • scoreCombo ๋ณด๋„ˆ์Šค ๊ธฐ์ค€ ๋ณ€๊ฒฝ:
    • ๊ธฐ์กด: ratio >= 1.2 โ†’ ๋ณด๋„ˆ์Šค
    • ๋ณ€๊ฒฝ: delta > 0.2 โ†’ +delta ร— 2.5, delta < -0.2 โ†’ +delta ร— 1.5
  • ์ถ”๊ฐ€ ๋ฐ˜ํ™˜๊ฐ’: stat.zoneAvg, stat.zoneDelta
  • ์•ˆ์ „์žฅ์น˜: history 10ํšŒ ๋ฏธ๋งŒ ์‹œ ๊ณ„์‚ฐ ์Šคํ‚ต, zoneTrend 0.5(์ค‘๋ฆฝ) ์œ ์ง€

v2.4.0 (2026-02-16)

6์ข… ํŠธ๋ Œ๋“œ ์ „๋ฉด ๋ฐ˜์˜

๊ณตํ†ต ๊ตฌ์กฐ

  • ์ตœ๊ทผ 100ํšŒ โ†’ ์ „๋ฐ˜50 / ํ›„๋ฐ˜50 ๋ถ„๋ฆฌ
  • ratio = ํ›„๋ฐ˜ํ‰๊ท  / ์ „๋ฐ˜ํ‰๊ท 
  • > 1.0 ๊ฐ•์„ธ / < 1.0 ์•ฝ์„ธ
  • ๋ฒ”์œ„ ํด๋žจํ”„: 0.5 ~ 2.0

buildStatCache โ€” trends ๊ฐ์ฒด ์ถ”๊ฐ€

# ํŠธ๋ Œ๋“œ ๊ณ„์‚ฐ ๋ฐฉ์‹
โ‘  ํ™€์ง oddRatio ํšŒ์ฐจ๋‹น ํ™€์ˆ˜ ๊ฐœ์ˆ˜ ์ „๋ฐ˜/ํ›„๋ฐ˜ ๋น„๊ต
โ‘ก AC๊ฐ’ acAvg / acTrend ํšŒ์ฐจ๋‹น AC๊ฐ’ ํ‰๊ท  ์ „๋ฐ˜/ํ›„๋ฐ˜ ๋น„๊ต
โ‘ข ์—ฐ์†์„ฑ consecAvg / consecTrend ํšŒ์ฐจ๋‹น ์—ฐ์†์Œ ์ˆ˜ ์ „๋ฐ˜/ํ›„๋ฐ˜ ๋น„๊ต
โ‘ฃ ๋์ˆ˜ tailTrend[0~9] ๋์ž๋ฆฌ๋ณ„ ์ถœํ˜„์ˆ˜ ์ „๋ฐ˜/ํ›„๋ฐ˜ ๋น„๊ต
โ‘ค ๋ฒˆํ˜ธํ•ฉ sumAvg / sumTrend ํšŒ์ฐจ๋‹น ๋ฒˆํ˜ธํ•ฉ ํ‰๊ท  ์ „๋ฐ˜/ํ›„๋ฐ˜ ๋น„๊ต
โ‘ฅ ๊ณ ์ € highRatio ํšŒ์ฐจ๋‹น ๊ณ ๋ฒˆํ˜ธ(23~45) ๊ฐœ์ˆ˜ ์ „๋ฐ˜/ํ›„๋ฐ˜ ๋น„๊ต

buildWeightedProb โ€” ๊ฐ€์ค‘์น˜ ์žฌ์„ค๊ณ„ (ํ•ฉ๊ณ„ 1.00)

freqScore      0.18  (โ†0.22)
recentScore    0.18  (โ†0.22)
gapScore       0.10  (โ†0.13)
reHitScore     0.10  (โ†0.13)
bonusScore     0.15
zoneGapScore   0.04  (โ†0.05)
colorTrend     0.08  (โ†0.10)
oddTrend       0.07  ์‹ ๊ทœ โ† โ‘  ํ™€์ง
tailTrend      0.07  ์‹ ๊ทœ โ† โ‘ฃ ๋์ˆ˜
highTrend      0.03  ์‹ ๊ทœ โ† โ‘ฅ ๊ณ ์ €

scoreCombo โ€” AC/์—ฐ์†์„ฑ/๋ฒˆํ˜ธํ•ฉ ํŠธ๋ Œ๋“œ ๋ณด๋„ˆ์Šค ์ถ”๊ฐ€

  • โ‘ก AC๊ฐ’: ์กฐํ•ฉ AC๊ฐ€ acAvg ยฑ1 ์ด๋‚ด โ†’ ๋ณด๋„ˆ์Šค, ยฑ2 ์ดˆ๊ณผ โ†’ ๊ฐ์ 
  • โ‘ข ์—ฐ์†์„ฑ: ์กฐํ•ฉ ์—ฐ์†์Œ ์ˆ˜๊ฐ€ consecAvg ยฑ0.5 ์ด๋‚ด โ†’ ๋ณด๋„ˆ์Šค
  • โ‘ค ๋ฒˆํ˜ธํ•ฉ: ์กฐํ•ฉ ํ•ฉ๊ณ„๊ฐ€ sumAvg ยฑ10 ์ด๋‚ด โ†’ ๋ณด๋„ˆ์Šค, ยฑ20 ์ดˆ๊ณผ โ†’ ๊ฐ์ 
  • ๋ชจ๋‘ colorZoneWeight ๋น„์œจ ์ ์šฉ

ํŠธ๋ Œ๋“œ ๋ฌด์‹œ ์•ˆ์ „์žฅ์น˜

  • history ์—†์Œ โ†’ trends ์ „ํ•ญ๋ชฉ ๊ธฐ๋ณธ๊ฐ’(1.0) โ†’ ์˜ํ–ฅ ์—†์Œ
  • history 10ํšŒ ๋ฏธ๋งŒ โ†’ ๊ณ„์‚ฐ ์Šคํ‚ต
  • stat/trends ์—†์Œ โ†’ scoreCombo ํŠธ๋ Œ๋“œ ๋ธ”๋ก ์Šคํ‚ต

v2.3.x - ์ƒ‰์ƒ ๊ตฌ์—ญ ํŠธ๋ Œ๋“œ

v2.3.0 (2026-02-16)

์ƒ‰์ƒ ๊ตฌ์—ญ ๋ณ€ํ™” ํŠธ๋ Œ๋“œ ๋ฐ˜์˜

๋ฌธ์ œ์ 

  • ๊ธฐ์กด ์ƒ‰์ƒ ๊ตฌ์—ญ ์ฒ˜๋ฆฌ(zoneGap, zoneFreq)๋Š” ๋‹จ์ˆœ ์ถœํ˜„ ์—ฌ๋ถ€/๊ฐ„๊ฒฉ๋งŒ ์ธก์ •
  • ์ตœ๊ทผ ํ๋ฆ„(๊ฐ•์„ธ/์•ฝ์„ธ ํŠธ๋ Œ๋“œ)์ด probMap์— ๋ฐ˜์˜๋˜์ง€ ์•Š์Œ

buildStatCache โ€” zoneTrend ๊ณ„์‚ฐ ์ถ”๊ฐ€

  • ์ตœ๊ทผ 100ํšŒ๋ฅผ ์ „๋ฐ˜ 50ํšŒ / ํ›„๋ฐ˜ 50ํšŒ๋กœ ๋ถ„๋ฆฌ
  • ๊ฐ ๊ตฌ์—ญ๋ณ„ ํšŒ์ฐจ๋‹น ํ‰๊ท  ์ถœํ˜„์ˆ˜ ๊ณ„์‚ฐ (์ถœํ˜„์—ฌ๋ถ€ 0/1 ์•„๋‹Œ ์‹ค์ œ ๊ฐœ์ˆ˜)
  • trendRatio = ํ›„๋ฐ˜ํ‰๊ท  / ์ „๋ฐ˜ํ‰๊ท 
    • > 1.0 : ๊ฐ•์„ธ (์ตœ๊ทผ์— ๋” ๋งŽ์ด ์ถœํ˜„)
    • < 1.0 : ์•ฝ์„ธ (์ตœ๊ทผ์— ๋œ ์ถœํ˜„)
    • ๋ฒ”์œ„ ํด๋žจํ”„: 0.5 ~ 2.0
  • ์ „๋ฐ˜ ํ‰๊ท  0์ธ ๊ตฌ์—ญ(ํ•œ๋ฒˆ๋„ ๋ฏธ์ถœํ˜„): ํ›„๋ฐ˜ ์ถœํ˜„ ์‹œ 1.5 ์ฒ˜๋ฆฌ

buildWeightedProb โ€” trend ๊ฐ€์ค‘์น˜ 10% ์‹ ๊ทœ ๋ฐ˜์˜

  • trendScore[n] = ํ•ด๋‹น ๋ฒˆํ˜ธ ๊ตฌ์—ญ์˜ trendRatio โ†’ 0~1 ์ •๊ทœํ™”
  • ๊ฐ•์„ธ ๊ตฌ์—ญ ๋ฒˆํ˜ธ ํ™•๋ฅ  ์ƒ์Šน / ์•ฝ์„ธ ๊ตฌ์—ญ ๋ฒˆํ˜ธ ํ™•๋ฅ  ํ•˜๋ฝ
  • ๊ธฐ์กด ๊ฐ€์ค‘์น˜ ์กฐ์ • (ํ•ฉ๊ณ„ 1.00 ์œ ์ง€):
    freqScore   0.25 โ†’ 0.22
    recentScore 0.25 โ†’ 0.22
    gapScore    0.15 โ†’ 0.13
    reHitScore  0.15 โ†’ 0.13
    bonusScore  0.15 ์œ ์ง€
    zgScore     0.05 ์œ ์ง€
    trendScore  0.10 ์‹ ๊ทœ
    

scoreCombo โ€” ํŠธ๋ Œ๋“œ ๊ฐ•์„ธ/์•ฝ์„ธ ๋ณด๋„ˆ์Šค ๋ฐ˜์˜

  • ๊ฐ•์„ธ ๊ตฌ์—ญ(trendRatio >= 1.2) ๋ฒˆํ˜ธ ํฌํ•จ ์‹œ +(ratio-1.0)ร—3 ์  ๋ณด๋„ˆ์Šค
  • ์•ฝ์„ธ ๊ตฌ์—ญ(trendRatio <= 0.8) ๋ฒˆํ˜ธ ํฌํ•จ ์‹œ -(1.0-ratio)ร—2 ์  ๊ฐ์ 
  • colorZoneWeight ๋น„์œจ ์ ์šฉ (๊ธฐ๋ณธ 0.20)
  • scoreCombo(combo, probMap, cfg, stat) โ€” stat ํŒŒ๋ผ๋ฏธํ„ฐ ์ถ”๊ฐ€

๊ฒ€์ฆ ๊ฒฐ๊ณผ

  • ํ™ฉ๊ตฌ์—ญ ์•ฝ์„ธ(ratio=0.504), ์ฒญ๊ตฌ์—ญ ๊ฐ•์„ธ(ratio=2.000) ์‹œ๋‚˜๋ฆฌ์˜ค
  • ์ฒญ๊ตฌ์—ญ ํ‰๊ท  ํ™•๋ฅ  / ํ™ฉ๊ตฌ์—ญ ํ‰๊ท  ํ™•๋ฅ  = 1.207 (์ฒญ > ํ™ฉ) ์ •์ƒ ํ™•์ธ

v2.2.x - ๋ฒˆํ˜ธ ์ ๋ฆผ ํ•ด๊ฒฐ

v2.2.7 (2026-02-16)

๋ฐฑํ…Œ์ŠคํŒ… ๊ฒฝ๋กœ ๋ถ„๋ฆฌ + setCubeEngine.html ์‹ ์„ค

๋ฐฑํ…Œ์ŠคํŒ… ๊ฒฝ๋กœ ๋ถ„๋ฆฌ (index.html)

  • ๊ธฐ์กด: ๋ฐฑํ…Œ์ŠคํŒ… ๊ฒฐ๊ณผ๊ฐ€ shared_engine_state์— ์ €์žฅ โ†’ ๋กœ๋˜ ์›น ํ•™์Šต ์˜ค์—ผ
  • ๋ณ€๊ฒฝ: ๋ฐฑํ…Œ์ŠคํŒ… โ†’ backtest_engine_state ์ „์šฉ ๋ฌธ์„œ์— ์ €์žฅ
  • ์ƒˆ ํ•จ์ˆ˜: saveBacktestState(probMap) โ€” backtest_engine_state์— ๊ฐ€์ค‘ ํ‰๊ท  ๋ณ‘ํ•ฉ
  • ์ƒˆ ๋ฒ„ํŠผ: โœ… ๋กœ๋˜ ์›น์— ์ ์šฉ โ€” ๋ฐฑํ…Œ์ŠคํŒ… ์™„๋ฃŒ ํ›„์—๋งŒ ํ‘œ์‹œ
    • applyBacktestToLive(): backtest + shared 50:50 ๋ณ‘ํ•ฉ โ†’ shared_engine_state ์ €์žฅ
    • confirm ๋Œ€ํ™”์ƒ์ž๋กœ ์˜๋„์น˜ ์•Š์€ ์ ์šฉ ๋ฐฉ์ง€
  • ๋ฐ˜๋ณต ๋ฐฑํ…Œ์ŠคํŒ… ์‹œ ๋กœ๋˜ ์›น ํ•™์Šต ์˜ํ–ฅ ์—†์Œ

setCubeEngine.html ์‹ ์„ค

  • ๋Œ€์‹œ๋ณด๋“œ ํ—ค๋” โš™๏ธ ์—”์ง„ ์„ค์ • ๋ฒ„ํŠผ โ†’ setCubeEngine.html ์ด๋™
  • 4ํƒญ ๊ตฌ์„ฑ:
    1. ๐ŸŽ› ํ”„๋ฆฌ์…‹: lotto645/lotto638/ํŒŒ์›Œ๋ณผ/๋ฉ”๊ฐ€๋ฐ€๋ฆฌ์–ธ/์œ ๋กœ๋ฐ€๋ฆฌ์–ธ/์ผ€๋…ธ/ํ„ฐ๋ณด/์ปค์Šคํ…€
    2. ๐Ÿง  ํ•™์Šต ํŒŒ๋ผ๋ฏธํ„ฐ: items/pick/rounds/poolSize/topN/evolveTime + ๊ฐ€์ค‘์น˜ 5์ข… ์Šฌ๋ผ์ด๋”
    3. ๐Ÿ”ฅ Firebase: collection/document ๊ฒฝ๋กœ ์ง์ ‘ ์ž…๋ ฅ, ํ•™์Šต ๊ณต์œ  ํ† ๊ธ€
    4. ๐Ÿ“‹ ์ฝ”๋“œ ์ƒ์„ฑ: ํ˜„์žฌ ์„ค์ • โ†’ ๋ณต์‚ฌ ๊ฐ€๋Šฅํ•œ JS ์ฝ”๋“œ ์ž๋™ ์ƒ์„ฑ
  • ํ•˜๋‹จ ๊ณตํ†ต: ํ…Œ์ŠคํŠธ ์‹คํ–‰ (Firebase ์—†์ด ๋กœ์ปฌ), ์„ค์ • ์ €์žฅ/๋ถˆ๋Ÿฌ์˜ค๊ธฐ (LocalStorage), ์ดˆ๊ธฐํ™”

v2.2.5 (2026-02-16)

์ƒ‰์ƒ ๊ตฌ์—ญ ํ†ต๊ณ„ ์ตœ๊ทผ 100ํšŒ๋กœ ์ œํ•œ

  • buildStatCache() ์ƒ‰์ƒ ๊ตฌ์—ญ ๊ณ„์‚ฐ ๋ฒ”์œ„ ์ œํ•œ
    • ์ „์ฒด ์ด๋ ฅ ์‚ฌ์šฉ โ†’ ์ตœ๊ทผ 100ํšŒ๋งŒ ์‚ฌ์šฉ
    • ์˜ค๋ž˜๋œ ํŒจํ„ด(์ˆ˜๋…„ ์ „) ์˜ํ–ฅ๋ ฅ ๋ฐฐ์ œ, ์ตœ๊ทผ ํŠธ๋ Œ๋“œ ๋ฐ˜์˜
  • zoneFreq, zoneGap ๊ณ„์‚ฐ์— ์ ์šฉ
  • ํšจ๊ณผ: ๋”์šฑ ๊ท ๋“ฑํ•œ ํ™•๋ฅ  ๋ถ„ํฌ, ์‹œ๋Œ€๋ณ„ ํŠธ๋ Œ๋“œ ๋ณ€ํ™” ์ ์‘

v2.2.4 (2026-02-16)

๐Ÿ”ฅ Firebase ๋ธ”๋ Œ๋”ฉ ๊ตฌ์กฐ ๊ทผ๋ณธ ์ˆ˜์ • (๋ˆ„์  ๊ณ ์ฐฉ ํ•ด๊ฒฐ)

๋ฌธ์ œ ๋ฐœ๊ฒฌ

  • Firebase ๋ธ”๋ Œ๋”ฉ์ด ML ํ•™์Šต ํ›„์— ์ ์šฉ๋˜์–ด ์ƒˆ ํ•™์Šต ๋ฌด์‹œ๋จ
  • ์ด์ „ ํ™•๋ฅ  70% + ์ƒˆ ํ•™์Šต 30% = ๊ณผ๊ฑฐ ํ•™์Šต์ด ๊ณ„์† ๋ˆ„์  ๊ณ ์ฐฉ
  • 3, 6, 12, 16, 38, 40์ด ํ•œ๋ฒˆ ๋†’์•„์ง€๋ฉด ์˜๊ตฌ ๊ณ ์ •๋˜๋Š” ์•…์ˆœํ™˜

๊ตฌ์กฐ ์ˆ˜์ •

  • Firebase ๋ธ”๋ Œ๋”ฉ์„ ML ํ•™์Šต ์ „์œผ๋กœ ์ด๋™
  • ์›๋ž˜ ์˜๋„๋Œ€๋กœ sin/cos ์ดˆ๊ธฐ๊ฐ’ ์กฐ์ • ๋ชฉ์ ์œผ๋กœ๋งŒ ์‚ฌ์šฉ
  • ์ด์ „ ํ•™์Šต โ†’ ML ํ•™์Šต โ†’ StatCache ๋ธ”๋ Œ๋”ฉ โ†’ ์ •๊ทœํ™” ์ˆœ์„œ๋กœ ๋ณ€๊ฒฝ

ํšจ๊ณผ

  • ๋งค ์‹คํ–‰๋งˆ๋‹ค ๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ๋กœ ์ƒˆ๋กญ๊ฒŒ ํ•™์Šต
  • ๋ˆ„์  ํŽธํ–ฅ ์ œ๊ฑฐ
  • ํ™•๋ฅ  ๋ถ„ํฌ ๊ท ๋“ฑํ™”

v2.2.3 (2026-02-16)

4์ค‘ ๋ฒˆํ˜ธ ์ ๋ฆผ ๋ฐฉ์ง€ ๊ฐ•ํ™”

โ‘  ํ™•๋ฅ  ์ •๊ทœํ™” ๊ฐ•ํ™”

  • ์ตœ์†Œ๊ฐ’์„ ํ‰๊ท ์˜ 30% ์ด์ƒ์œผ๋กœ ๋ณด์žฅ
  • ๊ทน๋‹จ์ ์œผ๋กœ ๋‚ฎ์€ ํ™•๋ฅ (0.005 ์ดํ•˜) ๋ฐฉ์ง€
  • ํ•˜์œ„ ๋ฒˆํ˜ธ ๊ธฐํšŒ ํ™•๋Œ€

โ‘ก statWeight ๊ธฐ๋ณธ๊ฐ’ ์กฐ์ •

  • 0.35 โ†’ 0.15 (ML ๋น„์ค‘ ์ฆ๊ฐ€)
  • ๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ ๊ณผ์ ํ•ฉ ๋ฐฉ์ง€

โ‘ข ๋งค 10๋ผ์šด๋“œ๋งˆ๋‹ค ํ™•๋ฅ  ์žฌ๋ถ„๋ฐฐ

  • ์ƒ์œ„ 50๊ฐœ ์กฐํ•ฉ์—์„œ 5ํšŒ ์ด์ƒ ๋“ฑ์žฅํ•œ ๋ฒˆํ˜ธ ํ™•๋ฅ  10% ๊ฐ์†Œ
  • ํ•œ ๋ฒˆ๋„ ๋“ฑ์žฅํ•˜์ง€ ์•Š์€ ๋ฒˆํ˜ธ ํ™•๋ฅ  10% ์ฆ๊ฐ€
  • ํŠน์ • ๋ฒˆํ˜ธ ๊ณ ์ฐฉ ๋ฐฉ์ง€, ๋‹ค์–‘ํ•œ ๋ฒˆํ˜ธ ํƒ์ƒ‰ ์œ ๋„

โ‘ฃ ํ›„๋ณด ์ƒ์„ฑ ์‹œ ์™„์ „ ๋žœ๋ค ๊ฐ•์ œ ํฌํ•จ

  • ๊ฐ ํ›„๋ณด๋งˆ๋‹ค 0~1๊ฐœ ๋ฒˆํ˜ธ๋ฅผ ํ™•๋ฅ  ๋ฌด์‹œํ•˜๊ณ  ์™„์ „ ๋žœ๋ค ์„ ํƒ
  • ์ƒ์œ„ ๋ฒˆํ˜ธ๋งŒ ์„ ํƒ๋˜๋Š” ํŒจํ„ด ์ฐจ๋‹จ
  • ๋‹ค์–‘์„ฑ ํ™•๋ณด

v2.2.2 (2026-02-16)

๋ฒˆํ˜ธ ์ ๋ฆผ ๋ฐฉ์ง€ ๊ฐ•ํ™” + ๊ธฐ๋‹น์ฒจ ์™„์ „์ผ์น˜ ์ œ์™ธ

โ‘  evolveHybridCube() โ€” ๋žœ๋ค ๊ฐ€์ค‘์น˜(0.95~1.05) ์ ์šฉ

  • ๊ธฐ์กด ๊ณ ์ •๊ฐ’ ๋Œ€์‹  randomBoost = 0.95 + Math.random() * 0.10 ์ƒ์„ฑ
  • ํŠน์ • ๋ฒˆํ˜ธ ๊ณ ์ฐฉ ๋ฐฉ์ง€
  • ๋‹ค์–‘์„ฑ ์ฆ๊ฐ€

โ‘ก ์ตœ์ข… ์ถ”์ฒœ ์กฐํ•ฉ ์„ ์ • ์‹œ historySet.has() ์ฒดํฌ ์ถ”๊ฐ€

  • 6๊ฐœ ๋ฒˆํ˜ธ๊ฐ€ ๊ธฐ๋‹น์ฒจ ์ด๋ ฅ๊ณผ ์™„์ „ ์ผ์น˜ํ•˜๋ฉด ํ•ด๋‹น ์กฐํ•ฉ ์Šคํ‚ต
  • ์‹ค์ „ ํ™œ์šฉ ๊ฐ€๋Šฅํ•œ ์ƒˆ๋กœ์šด ์กฐํ•ฉ๋งŒ ์ถ”์ฒœ

v2.2.1 (2026-02-16)

๋ฒˆํ˜ธ ์ ๋ฆผ ๋ฒ„๊ทธ ์ˆ˜์ •

๋ฌธ์ œ ์›์ธ

  • ๋งค ๋ผ์šด๋“œ ์ƒ์œ„ ์กฐํ•ฉ์— ร—1.05 ์ ์šฉ
  • 50๋ผ์šด๋“œ ๋ˆ„์  ์‹œ ํŠน์ • ๋ฒˆํ˜ธ ๊ณ ์ฐฉ

์ˆ˜์ • ๋‚ด์šฉ

  • ๋ผ์šด๋“œ๋ณ„ probMap ๋™์  ๊ฐฑ์‹  ๋ธ”๋ก ์™„์ „ ์ œ๊ฑฐ
  • probMap์€ ML + StatCache + ๋ณด๋„ˆ์Šค ํ•™์Šต์œผ๋กœ๋งŒ ๊ตฌ์„ฑ

v2.2.0 (2026-02-16)

colorZone + bonusHistory ํ•™์Šต ๊ธฐ๋Šฅ ์ถ”๊ฐ€

โ‘  buildStatCache() โ€” ์ƒ‰์ƒ ๊ตฌ์—ญ๋ณ„ ๋นˆ๋„/๊ฐ„๊ฒฉ ์ถ”๊ฐ€

  • ํ™ฉ(110) / ์ฒญ(1120) / ์ (2130) / ํ‘(3140) / ๋…น(41~45)

โ‘ก buildWeightedProb() โ€” bonusHistory ๋ณด๋„ˆ์Šค ๋ฒˆํ˜ธ ํ•™์Šต

  • bonusWeight ์˜ต์…˜ (๊ธฐ๋ณธ 0.15)

โ‘ข scoreCombo() โ€” colorZoneWeight ์ƒ‰์ƒ ๊ท ํ˜• ์ ์ˆ˜ ์ถ”๊ฐ€

  • ๊ธฐ๋ณธ๊ฐ’ 0.20

โ‘ฃ DEFAULTS ์ถ”๊ฐ€

  • bonusHistory: null
  • bonusWeight: 0.15
  • colorZoneWeight: 0.20

v2.1.x - ํ†ต๊ณ„ ์บ์‹œ + ์„ฑ๋Šฅ ์ตœ์ ํ™”

v2.1.1 (2026-02-16)

index.html ๋Œ€์‹œ๋ณด๋“œ ๊ฐœ์„ 

โ‘  poolSize ์Šฌ๋ผ์ด๋” ์ถ”๊ฐ€

  • 100~10,000 ๋ฒ”์œ„, 100 ๋‹จ์œ„ ์กฐ์ ˆ ๊ฐ€๋Šฅ

โ‘ก ๋กœ๋˜ ์›น ๋‹น์ฒจ ํžˆ์Šคํ† ๋ฆฌ ์—ฐ๋™

  • lotto_history/lotto645_historyโ†’draws ์‹ค์ œ ๋กœ๋“œ ํ›„ ์—”์ง„์— ์ „๋‹ฌ

โ‘ข ์‹คํ–‰ ์‹œ ๋‹จ๊ณ„๋ณ„ ์ƒํƒœ ํ‘œ์‹œ

  • "๋‹น์ฒจ ๋ฐ์ดํ„ฐ ๋กœ๋”ฉ ์ค‘" โ†’ "ํ•™์Šต ์ƒํƒœ ๋กœ๋”ฉ ์ค‘" โ†’ "์—”์ง„ ์‹คํ–‰" ์ˆœ์œผ๋กœ ๋ช…ํ™•ํ™”

โ‘ฃ path-box์— ๋‹น์ฒจ ํžˆ์Šคํ† ๋ฆฌ ๊ฒฝ๋กœ/์ƒํƒœ ํ–‰ ์ถ”๊ฐ€

  • ์ดˆ๊ธฐ ๋กœ๋“œ ์‹œ ํšŒ์ฐจ์ˆ˜ ์‚ฌ์ „ ํ™•์ธ

โ‘ค renderStat โ€” numbers ๋ฐฐ์—ด/2D ๋ฐฐ์—ด ์–‘์ชฝ ํ˜•ํƒœ ๋ชจ๋‘ ์ˆ˜์šฉ

v2.1.0 (2026-02-16)

cube-engine.js ์ฃผ์š” ์—…๊ทธ๋ ˆ์ด๋“œ

โ‘  buildStatCache() ์ถ”๊ฐ€

  • freq / recentFreq / gap / reHit ์‚ฌ์ „ ๊ณ„์‚ฐ

โ‘ก buildWeightedProb() ์ถ”๊ฐ€

  • ํ†ต๊ณ„ ๊ธฐ๋ฐ˜ ํ™•๋ฅ  ๋ ˆ์ด์–ด
  • statWeight ์˜ต์…˜ (๊ธฐ๋ณธ 0.35)

โ‘ข historySet O(1) ๋„์ž…

  • isTooSimilar O(N) โ†’ O(1) ๋Œ€์ฒด
  • ํ›„๋ณด ์ƒ์„ฑ ์†๋„ ํ–ฅ์ƒ

โ‘ฃ onProgress stats ํ™•์žฅ

  • scoreHistory, probMap, topItems, cubeResults ์‹ค์‹œ๊ฐ„ ์ „๋‹ฌ

โ‘ค onRound ์‹œ๊ทธ๋‹ˆ์ฒ˜ ๋ณ€๊ฒฝ

  • 3๋ฒˆ์งธ ์ธ์ž scoreHistory ์ถ”๊ฐ€

โ‘ฅ result ํ•„๋“œ ์ถ”๊ฐ€

  • scoreHistory, stat

โ‘ฆ index.html ํ•™์Šต ์ƒํƒœ ๋ชจ๋‹ˆํ„ฐ๋ง ๋Œ€์‹œ๋ณด๋“œ๋กœ ์ „๋ฉด ๊ฐœํŽธ

โ‘ง meta.version ํ•„๋“œ ์ถ”๊ฐ€

โ‘จ DEFAULTS ์ถ”๊ฐ€

  • statWeight: 0.35
  • recentWindow: 30

v2.0.x - ๊ตฌ์กฐ ๊ฐœํŽธ

v2.0.1

์ง„ํ™” ๋ฃจํ”„ ์ตœ์ ํ™”

  • ์ ์‘ ์ฃผ๊ธฐ 1000 โ†’ 100์œผ๋กœ ๋‹จ์ถ•
  • topCandidatePool ํŒŒ๋ผ๋ฏธํ„ฐ ์ถ”๊ฐ€

v2.0.0

๊ตฌ์กฐ ๊ฐœํŽธ

  • ๋ฒ”์œ„ ์„ค์ • (rangeStart/End)
  • ์ œ์™ธ์ˆซ์ž (excludeNumbers)
  • Firebase ์—ฐ๋™
  • ์ ์‘ํ˜• ํ•™์Šต๋ฅ 
  • ๋ผ์šด๋“œ๋ณ„ probMap ๋™์  ๊ฐฑ์‹ 

v1.x - ์ดˆ๊ธฐ ๋ฒ„์ „

v1.2.1

  • ๊ธฐ๋ณธ๊ฐ’ ์ถ”๊ฐ€ ์กฐ์ •

v1.1.2

  • ๊ธฐ๋ณธ๊ฐ’ ์ถ”๊ฐ€ ์กฐ์ •

v1.1.1

  • ๊ธฐ๋ณธ๊ฐ’ ๋ณ€๊ฒฝ: evolveTime 150, loopMin 5000, poolSize 3000

v1.1.0

  • reportProgress ํƒ€์ด๋ฐ ์ˆ˜์ •
  • ๋ผ์šด๋“œ ์™„๋ฃŒ ํ›„ ์ฆ‰์‹œ ๋ฐ˜์˜

v1.0.0

  • ์ตœ์ดˆ ๋ฆด๋ฆฌ์ฆˆ
  • ๋ฒ”์šฉํ™”, ํ”„๋ฆฌ์…‹, ์ฝœ๋ฐฑ
  • CommonJS/๋ธŒ๋ผ์šฐ์ € ์ง€์›

index.html ํ•™์Šต ๋ชจ๋‹ˆํ„ฐ ํžˆ์Šคํ† ๋ฆฌ

v2.2.2 (2026-02-16)

UI ๊ฐ„์†Œํ™” + Firebase ์—ฐ๊ฒฐ ์ฒดํฌ + Pool Size ์Šฌ๋ผ์ด๋” ๊ฐœ์„ 

โ‘  ์ƒํƒœ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ๋ฒ„ํŠผ ์ œ๊ฑฐ

โ‘ก ์ดˆ๊ธฐํ™” ๋ฒ„ํŠผ ์ œ๊ฑฐ

โ‘ข Firebase ์—ฐ๊ฒฐ ์‚ฌ์ „ ์ฒดํฌ ์ถ”๊ฐ€

  • ์—ฐ๊ฒฐ ์‹คํŒจ ์‹œ "Database์— ์—ฐ๊ฒฐ์ด ์•ˆ๋ผ ํ…Œ์ŠคํŠธ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅ ํ•ฉ๋‹ˆ๋‹ค" ์•Œ๋ฆผ

โ‘ฃ Pool Size ์Šฌ๋ผ์ด๋” ์ž๋™ ๋น„ํ™œ์„ฑํ™”

  • ํ•™์Šต ์‹œ์ž‘ ์‹œ disabled, ์™„๋ฃŒ/์˜ค๋ฅ˜ ์‹œ ์žฌํ™œ์„ฑํ™”
  • disabled ์Šคํƒ€์ผ: opacity 50% + cursor:not-allowed

๋ผ์ด์„ผ์Šค

zerojat7-ui License

๋ฌธ์˜

GitHub Issues๋ฅผ ํ†ตํ•ด ๋ฒ„๊ทธ ๋ฆฌํฌํŠธ ๋ฐ ๊ธฐ๋Šฅ ์ œ์•ˆ์„ ๋‚จ๊ฒจ์ฃผ์„ธ์š”.

About

Library collection

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors