PowerShell İle Renkli Milli Piyango Simülatörü Ve Hedef Numara Arama

Programlama hakkında genel bilgilerin, dökümanların yer aldığı bölümümüz.
Cevapla
Kullanıcı avatarı
TRWE_2012
Mesaj Panosu Yöneticisi
Mesaj Panosu Yöneticisi
Mesajlar: 922
Kayıt: 30 Ağu 2022 21:59
Konum: DÜZCE/Akçakoca
Meslek: MADEN MÜHENDİSİ
Teşekkür etti: 261 kez
Teşekkür edildi: 770 kez
İletişim:

PowerShell İle Renkli Milli Piyango Simülatörü Ve Hedef Numara Arama

Mesaj gönderen TRWE_2012 »

Bu kodladığımız powerShell betiği, altı haneli bir Milli Piyango çekilişini renkli bir tabloyla simüle eder ve isteğe bağlı olarak belirli bir hedef numarayı arama (log tutmadan) işlevi sunar.

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
EKRAN GÖRÜNTÜSÜ : (Sistem : Windows11 Yapı 24H2 x64 Home TR)
Resim
Resim
Dosya ekleri
MilliPiyango_Simulator_Sade.7z
28 ‎Eylül ‎2025 ‎Pazar, ‏‎02:02:49'da TRWE_2012 TARAFINDAN OLUŞTURULDU.
(1.33 KiB) 1 kere indirildi
Verily We have granted thee a manifest Victory
Fetih Suresi - 1.Ayet


Resim
Resim

Etiketler:
Kullanıcı avatarı
TRWE_2012
Mesaj Panosu Yöneticisi
Mesaj Panosu Yöneticisi
Mesajlar: 922
Kayıt: 30 Ağu 2022 21:59
Konum: DÜZCE/Akçakoca
Meslek: MADEN MÜHENDİSİ
Teşekkür etti: 261 kez
Teşekkür edildi: 770 kez
İletişim:

Re: PowerShell İle Renkli Milli Piyango Simülatörü Ve Hedef Numara Arama

Mesaj gönderen TRWE_2012 »

Hedef Numara arama özelliğini şöyle kullanabilirsiniz gerçek hayatta:

Diyelim yılbaşı özel bileti aldınız.
Bilet Numarası : 345768 (Tam Bilet)

Bu bilet numarasını betiğe yazıyorsunuz.Ardından deneme aralığını giriyorsunuz , örneği 5000 ...5000 demek 5000 kişi içinde bilet numarasını arıyor.Diyelim numarayı 2345.adımda buldu.Bunun anlamı şudur.

1.Siz gerçek hayatta bu numarayı alan 2345.kişiniz.
2.2345 sayısı 1000000 sayısından küçük olduğu için bilete gerçek hayatta para vurması "ÇOK YÜKSEK...!!" . Eğer betik bu bilet numarasını 2345 adımda değilde 987655.adımda bulsaydı bu bilete amorti bile vurmazdı.

3.Eğer bilet numarasını hiç bulamazsa o bileti çöpe atın.Boşuna para vermişsiniz demektir.
Verily We have granted thee a manifest Victory
Fetih Suresi - 1.Ayet


Resim
Resim
Cevapla

“Genel Programlama” sayfasına dön