CodeKitHub
Jeneratör Araçları

İsim Çekme Üreteci

Son güncelleme:

Gizli Noel Baba veya hediye değişimi için elle isim çekmek gerçek bir matematik sorununa takılır: tamamen rastgele bir karıştırma birini yanlışlıkla kendisine atayabilir ve sonuç "doğru görünene" kadar yeniden çekmek artık gerçekten rastgele değildir. Bu araç bunu doğru şekilde çözer — herkesin ismini girin, araç bir derangement (kimsenin kendi ismine denk gelmeyeceğinin matematiksel olarak garanti edildiği bir karıştırma) hesaplar, ardından her sonucu dokunarak açığa çıkarma düğmesinin arkasına gizler; böylece insanlar paylaşılan bir ekranda başkalarının sonucunu görmeden kendi eşleşmelerini kontrol edebilir.

Bu Araç Nedir?

Derangement, belirli bir matematiksel kavramdır: bir kümenin hiçbir öğesinin orijinal konumunda kalmadığı bir permütasyon (yeniden sıralama). Bir hediye değişimine uygulandığında, bu, hiç kimsenin kendisiyle eşleşmeyeceği şekilde herkesin isminin yeni bir sırayla karıştırılması anlamına gelir — adil bir Gizli Noel Baba çekilişinin tam olarak ihtiyaç duyduğu kısıtlama budur ve naif bir `array.sort(() => Math.random() - 0.5)` karıştırmasının kendi başına GARANTİ ETMEDİĞİ tam olarak da budur.

Bu araç, listeyi rastgele bir algoritmayla tekrar tekrar karıştırıp kendine atama kısıtlamasını kontrol ederek bir derangement üretir; bunun için `Math.random()` yerine, bu sitenin [Şifre Üreteci](/password-generator/) ve [Rastgele Harf Üreteci](/random-letter-generator/) tarafından kullanılan aynı kriptografik olarak güvenli kaynak olan `crypto.getRandomValues()` kullanılır.

Açığa çıkarma düğmesi tasarımı, grup halinde isim çekmenin ayrı, çok pratik bir sorununu çözer: tüm eşleşmeleri ekranda aynı anda göstermek herkesin sürprizini aynı anda bozar. Her kişinin sonucunu kendi düğmesinin arkasına gizlemek, bir cihazın elden ele dolaştırılmasına (veya bir ekranın paylaşılmasına) izin verir, böylece her kişi yalnızca kendi ismini kontrol eder.

Neden Kullanmalısınız?

  • Yılbaşı akşamı ailece otururken biri son anda "hediye çekilişi yapalım" diyor — telefonu masada dolaştırıyorsun, herkes otuz saniyede kağıt kalem olmadan kendi ismini kontrol ediyor.
  • İş yerinin grup sohbetinde "yılbaşı hediye çekilişi yapıyoruz" mesajı geldi — görüntülü görüşmede ekranını paylaşıyorsun, herkes sırayla kendi sonucunu açığa çıkarıyor, ekipteki diğerleri göremiyor.
  • Geçen yıl kağıtlara yazıp elle çekilişte biri kendi ismini çekti ve herkesin gözü önünde baştan başlamak zorunda kalmıştınız — matematiksel derangement sayesinde bu artık olamaz.
  • Bir çalışma arkadaşı hediye grubuna son dakikada katıldı — çekilişi saniyeler içinde silip yeniden oluşturuyorsun, Excel tablosunu ya da üçüncü parti bir uygulamadaki etkinliği yeniden düzenlemene gerek kalmadan.
  • Kimsenin başkasının sonucuna göz atmasını istemiyorsun — burada her sonuç, o kişi kendi düğmesine basana kadar gizli kalır.

Nasıl Kullanılır

  1. Her katılımcının ismini kendi satırına yazın — en az 3 farklı isim.
  2. "Eşleşmeleri çek"e tıklayın — araç, kimsenin kendisiyle eşleşmemesi için geçerli bir derangement hesaplar.
  3. Her katılımcının satırı, ismini gizli bir sonuçla birlikte gösterir — cihazı elden ele dolaştırın veya ekranı paylaşın ve her kişinin kime hediye vereceğini görmek için kendi "Açığa çıkarmak için dokun" düğmesine tıklamasını sağlayın.
  4. Biri sonucunu kontrol ettikten sonra tekrar açığa çıkarmaya tıklayarak gizleyin, böylece ekran bir sonraki kişi için hazır kalır.

Örnek

Giriş

Alice, Bob, Carol, Dave

Çıkış

Alice → Carol, Bob → Dave, Carol → Bob, Dave → Alice

Her çalıştırma farklı, geçerli bir derangement üretir — bu tek bir örnek sonuçtur. Kimsenin kendisine atanmadığına dikkat edin; bu, gerçek bir Gizli Noel Baba çekilişinin ihtiyaç duyduğu ve sıradan bir rastgele karıştırmanın garanti etmediği tek katı kısıtlamadır.

Derangement ile sıradan rastgele karıştırma karşılaştırması

Sıradan bir karıştırma ve bir derangement birbirine benzer görünür, ancak yalnızca biri bir hediye değişimi için gerçekten güvenlidir.

YöntemBirini kendisine atayabilir mi?"Doğru görünene" kadar yeniden çekmek adil mi?
Sıradan rastgele karıştırmaEvet — özellikle küçük gruplarda gerçek bir olasılıkHayır — kötü sonuçları manuel olarak reddetmek sonucu yanlı hale getirir
Derangement (bu araç)Hayır — yapı gereği matematiksel olarak imkânsızGeçerli değil — her geçerli sonuç zaten kısıtlamayı karşılar

İlgili araçlar

Diğer rastgele çekilişler ve üreteçler için bu araçları deneyin.

Fantezi İsim Üreteci · Rastgele Sayı Üreteci · Rastgele Harf Üreteci

Grup halinde sorunsuz bir çekiliş için ipuçları

Tek bir ekranda ortak çekiliş yaklaşık on kişiye kadar iyi çalışır; daha kalabalık gruplarda telefonu birkaç kez dolaştırmak ya da organizatörün sadece herkesin kontrol ettiğini yüksek sesle onaylaması, isimleri açıklamadan, daha pratik olur.

Grupta birbirini iyi tanımayan kişiler varsa (örneğin yeni işe başlayanların olduğu bir ofis), sadece takma isim yerine tam isim yazın: derangement girdiğiniz tam karakter dizileriyle çalışır, bu yüzden "Ahmet" ile "Ahmet Y." aslında aynı kişi olsa bile iki farklı kişi olarak işlenir.

Küçük bir teknik sınırı aklınızda bulundurun: sadece üç katılımcıyla mümkün olan derangement sayısı çok azdır, bu yüzden tekrar tekrar çekiliş yapmak benzer sonuçlar verme eğilimindedir — 5 veya daha fazla kişilik gruplarda sonuç çeşitliliği çok daha hızlı artar.

Sıkça Sorulan Sorular

Bir isim iki kez girilirse ne olur?

Araç, çekiliş yapmadan önce her ismin benzersiz olmasını gerektirir — yinelenen bir satır tespit ederse, önce listeyi düzeltmenizi ister, çünkü aynı isme sahip iki katılımcının sonuçlarını ayırt etmek imkânsız olurdu.

Biri kendi ismini çekebilir mi?

Hayır — araç özellikle bir derangement hesaplar; bu, hiçbir öğenin (kişinin) kendi orijinal konumuna eşlenmediği matematiksel özelliğe sahip bir karıştırmadır. Bu garanti, sıradan bir rastgele karıştırmanın yapacağı gibi şansa bırakılmaz, algoritma tarafından uygulanır.

Gereken minimum kişi sayısı nedir?

Üç. Sadece iki kişiyle, anlamlı bir şekilde rastgele olmayan şekilde her seferinde birbirlerine atanmadan bir derangement imkânsızdır, bu yüzden araç en az üç katılımcı gerektirir.

Hepimiz aynı ekrana bakıyorsak sonuçları nasıl gizli tutarız?

Her katılımcının sonucu hepsi birden gösterilmek yerine kendi "Açığa çıkarmak için dokun" düğmesinin arkasında gizlenir. Cihazı (veya ekranı) sırayla her kişiye geçirin, yalnızca kendi satırlarını açığa çıkarıp not almalarını sağlayın, ardından bir sonraki kişiye geçmeden önce tekrar tıklayarak gizleyin.

İsimler veya çekiliş sonucu bir sunucuya gönderiliyor mu?

Hayır. İsimlerin okunması, derangement'in hesaplanması ve açığa çıkarma düğmelerinin gösterilmesi dahil her şey tamamen tarayıcınızda gerçekleşir. Hiçbir şey yüklenmez ve sekmeyi kapatmak her şeyi temizler, bu yüzden sürprizi yanlışlıkla bozabilecek hiçbir çekiliş geçmişi hiçbir yerde kalmaz.

Zaten birbirine hediye alan bir çifti, örneğin eşleri, eşleşmeden hariç tutabilir miyim?

Araç yalnızca temel derangement kısıtlamasını garanti eder (kimse kendisine atanmaz), belirli kişiler arasında ek kurallar uygulamaz. Eşleri de hariç tutmanız gerekiyorsa, en pratik çözüm o çift eşleşmeyene kadar çekilişi yeniden oluşturmak ya da ilgili kişileri elle ayırarak iki ayrı çekiliş yapmaktır.

Herkes ismini kontrol etmeden sekmeyi kapatırsam ne olur?

Hiçbir şey bir sunucuya veya kalıcı belleğe kaydedilmediği için tüm sonuç kaybolur — yeniden bir çekiliş oluşturmanız gerekir. Büyük gruplarda, son kişi sonucunu kontrol edene kadar sekmeyi açık tutmak daha güvenlidir.

Sonuç gerçekten rastgele mi, yoksa bazı kombinasyonlar diğerlerinden daha olası mı?

Algoritma, geçerli bir derangement elde edene kadar karıştırmayı tekrarlar ve yalnızca kendine atama kısıtlamasını ihlal eden denemeleri eler — başka bir önyargı eklemez, bu yüzden mümkün olan tüm derangement'ler arasında her biri seçilme açısından esasen eşit olasılığa sahiptir.

Bunu hediye yerine görev veya nöbet dağıtımı için de kullanabilir miyim?

Evet — derangement mantığı, her kişiye kendisi dışında başka birini atamak istediğiniz her senaryoda çalışır; örneğin çalışma arkadaşları arasında kod inceleme nöbetleri veya bir ikili görev için eşleştirme: sadece isimleri girip çekmeniz yeterli.

İlgili Araçlar