Javascript ile Geçerli ve Rastgele TC Kimlik Numarası Üretme Algoritması

TC Kimlik Numarası, Türkiye Cumhuriyeti vatandaşlarına ait 11 haneli benzersiz bir numaradır. Bu numaranın belirli matematiksel kurallara uyması gerekir. Peki, geçerli bir TC Kimlik Numarası nasıl oluşturulur? Bu yazımızda, JavaScript ile rastgele ve geçerli bir TC Kimlik No Üretici (Generator) oluşturacağız.

TC Kimlik Numarası Kuralları

TC Kimlik numarası üretirken dikkat edilmesi gereken bazı kurallar vardır:

  • 11 haneli olmalı.
  • İlk hane 0 olamaz.
  • 10. hane belirli bir formüle göre hesaplanır.
  • 11. hane, tüm rakamların toplamının 10’a bölümünden kalan olarak hesaplanır.

Şimdi, JavaScript ile geçerli bir TC Kimlik Numarası üreten fonksiyonu inceleyelim.

JavaScript ile Geçerli TC Kimlik Numarası Üretme

Aşağıdaki kod, yukarıdaki kurallara uygun olarak geçerli bir TC Kimlik No üretir:

function generateTurkishID() {

// İlk 9 haneyi rastgele oluştur

const firstNineDigits = Math.floor(900000001 \* Math.random() + 100000000).toString();

// Rakamları diziye çevir

const digits = firstNineDigits.split("").map(Number);

// Tek ve çift indekslerdeki sayıların toplamını hesapla

const oddSum = digits\[0\] + digits\[2\] + digits\[4\] + digits\[6\] + digits\[8\];

const evenSum = digits\[1\] + digits\[3\] + digits\[5\] + digits\[7\];

// 10. haneyi hesapla

const tenthDigit = (7 \* oddSum - evenSum) % 10;

// 11. haneyi hesapla

const eleventhDigit = (oddSum + evenSum + tenthDigit) % 10;

// Son haliyle geçerli bir TC Kimlik Numarası oluştur

return firstNineDigits + tenthDigit + eleventhDigit;

}

console.log(generateTurkishID());

Nasıl Çalışıyor?

  • 1️⃣ İlk olarak, ilk 9 hane rastgele oluşturulur.
  • 2️⃣ Daha sonra, tek indeksli ve çift indeksli rakamların toplamı hesaplanır.
  • 3️⃣ 10. hane, özel bir formül ile hesaplanır:
  • 📌 (7 * tek indeks toplamı - çift indeks toplamı) % 10
  • 4️⃣ 11. hane, tüm rakamların toplamının 10’a bölümünden kalan olarak bulunur.

Bu sayede, her oluşturulan numara geçerli bir TC Kimlik Numarası formatına sahip olur. 🎯