Ana akış (Sözel Algoritmatiksel Yapısı)
Renk ve olasılık ayarları – 6 farklı renk tanımlanır; her biletin kazanma olasılığı 1/1 000 000 (%0.0001) olarak hesaplanır.
Bilet üretimi – 6 tur (satır) için her seferinde 6 rastgele rakam (0‑9) birleştirilerek bir bilet numarası oluşturulur ve bir diziye ($allSelections) eklenir.
Tablo çıktısı – Bilet numaraları ve olasılıkları, belirlenen renklerle formatlanıp ekrana yazdırılır.
Menü – Kullanıcıya üç seçenek sunulur:
0 – betiği sonlandır.
1 – çekilişi yeniden başlat (yeni rastgele biletler üret).
2 – hedef numara arama fonksiyonunu çalıştır.
Hedef numara arama (Find‑TargetTicket) ====>>> (bence en önemli özellik + CPU Bencmark Test Özellikli)
Parametreler:
-Target – 6 haneli aranan sayı (regex ^\d{6}$).
-MaxTries – maksimum deneme sayısı (varsayılan 1 000 000).
Bir Stopwatch başlatılır, ardından bir for döngüsüyle rastgele 6‑haneli biletler üretilir.
Üretilen bilet hedefle eşleşirse, deneme sayısı ve geçen süre yeşil renkle gösterilir ve fonksiyon döner.
Her 100000 (yazıyla yüzbin) denemede ilerleme mesajı kırmızı olmadan ekrana yazdırılır.
Hedef bulunamazsa, kırmızı renkle “bulunamadı” mesajı ve süre gösterilir.
Diğer detaylar
Betik log tutmaz; sadece anlık Write-Host çıktıları verir.
try / catch bloğu, olası hataları kırmızı renkle yakalar.
Sonunda “Betiğin çalışması tamamlandı” mesajı ve Read-Host ile kullanıcıdan bir tuşa basması beklenir.
Özetlersek kodladığım betiği, rastgele biletler üretip renkli bir tabloyla gösterir, ardından kullanıcıya yeni bir çekiliş yapma, betiği sonlandırma veya belirli bir 6‑haneli numarayı bulmak için deneme yapma imkanı tanır.
KOD İÇERİĞİ ( MilliPiyango_Simulator_Sade.ps1) :
Kod: Tümünü seç
<#
MilliPiyango_Simulator_Hedef_NoLog.ps1
PowerShell ile basit ve renkli Milli Piyango çekiliş simülatörü, hedef numara arama özelliği ile (log kaydı olmadan)
TRWE_2012 için hazırlandı.
#>
function Find-TargetTicket {
param(
[Parameter(Mandatory=$true)][ValidatePattern('^\d{6}$')] [string]$Target,
[int]$MaxTries = 1000000
)
$sw = [diagnostics.stopwatch]::StartNew()
for ($i = 1; $i -le $MaxTries; $i++) {
$ticket = -join ((0..9 | ForEach-Object { Get-Random -Minimum 0 -Maximum 10 } | Select-Object -First 6))
if ($ticket -eq $Target) {
$sw.Stop()
Write-Host "Tebrikler! Hedef $Target bulundu. Deneme sayısı: $i. Süre: $($sw.Elapsed)" -ForegroundColor Green
return
}
if ($i % 100000 -eq 0) { Write-Host "$i deneme yapıldı..." }
}
$sw.Stop()
Write-Host "Hedef $Target $MaxTries denemede bulunamadı. Süre: $($sw.Elapsed)" -ForegroundColor Red
}
# Ana çekiliş döngüsü
do {
try {
$colors = @("DarkRed","DarkGreen","DarkYellow","DarkBlue","DarkMagenta","DarkCyan")
$bonusColor = "DarkGray"
$totalCombinations = 1000000
$probPercent = [math]::Round((1 / $totalCombinations) * 100, 8)
$allSelections = @()
for ($round=1; $round -le 6; $round++) {
$ticket = -join ((0..9 | ForEach-Object { Get-Random -Minimum 0 -Maximum 10 } | Select-Object -First 6))
$allSelections += ,@($ticket)
}
Write-Host ""
Write-Host ("{0,-12} {1,10}" -f "Tur","Bilet (Olasılık %)")
Write-Host ("-"*30)
for ($i=0; $i -lt $allSelections.Count; $i++) {
$ticket = $allSelections[$i][0]
$color = $colors[$i % $colors.Count]
Write-Host ("{0,-12} {1,10}" -f ("Bilet " + ($i+1)), "$ticket ($probPercent)") -ForegroundColor $color
}
} catch {
Write-Host "Hata oluştu: $_" -ForegroundColor Red
}
# Ana Menü
Write-Host ""
Write-Host "Ana Menü:"
Write-Host "0 = Betiği sonlandır"
Write-Host "1 = Çekilişi tekrarla"
Write-Host "2 = Hedef numara ara"
$choice = Read-Host "Seçiminiz (0/1/2)"
if ($choice -eq "2") {
$target = Read-Host "Hedef 6 haneli numara giriniz (örn: 136715)"
$max = Read-Host "Maksimum deneme sayısını giriniz (örn: 1000000)"
Find-TargetTicket -Target $target -MaxTries ([int]$max)
}
} while ($choice -eq "1")
Write-Host "`nBetiğin çalışması tamamlandı. Çıkmak için Enter'a basın..."
Read-Host
#Hashtags
#MilliPiyango #PowerShell #HedefNumara #TRWE_2012 #NoLog

