Hızlı ve adil bir şekilde rastgele bir sayı almak mı istiyorsunuz? Bu ücretsiz, çevrimiçi rastgele sayı üreteci, seçtiğiniz herhangi bir aralıkta tek bir sayı — ya da sayılardan oluşan tam bir liste — üretir: 1 ile 10 arasında basit bir aralıktan tutun da milyarlara uzanan aralıklara kadar. En küçük ve en büyük değerleri “Min” ve “Maks” alanlarına girin, kaç sayıya ihtiyacınız olduğunu “Adet” alanında seçin ve “Oluştur”a basın. Her iki sınır da sonuca dahildir, yani 1 ile 10 arasındaki bir aralık hem 1'i hem de 10'u verebilir.
Her sonuç, doğrudan tarayıcınızda Web Crypto API (crypto.getRandomValues) aracılığıyla üretilir — bu da işletim sisteminin güvenli rastgelelik kaynağından kriptografik olarak güçlü rastgele değerler sağlar. Hiçbir şey bir sunucuya gönderilmez, sonuçlarınız sunucuda saklanmaz ve sayılarınızı asla görmeyiz. Üretim anında gerçekleşir ve gizli kalır, sayfa yüklendikten sonra yavaş bir bağlantıda bile çalışmaya devam eder.
Seçenekler, insanların rastgele sayılara gerçekten ihtiyaç duyduğu gerçek durumlar için tasarlanmıştır. Hiçbir sayının iki kez çıkmaması için “Tekrarsız”ı açın — çekilişler, ödül çekilişleri veya insanları farklı gruplara ayırmak için ihtiyacınız olan ayardır. 500 katılımcı arasından yirmi kazanan mı gerekiyor? “Min”i 1'e, “Maks”ı 500'e ayarlayın, “Tekrarsız”ı açın, “Adet”i 20'ye ayarlayın ve “Oluştur”a basın. “Sıralama düzeni” sonucu artan veya azalan şekilde dizer, bir düğme ise tüm sonuçları tek seferde kopyalar. “Çıktı biçimi”ni “Yeni satır”dan “Boşlukla ayrılmış” veya “Virgülle ayrılmış”a çevirdiğinizde “Set sayısı” alanı ortaya çıkar: aynı anda birden fazla bağımsız çekiliş — örneğin yirmi çekiliş turu için 3'er sayılık yirmi set — “Setler arasında tekrarlara izin ver” ise aynı sayının bunlardan birden fazlasında çıkıp çıkamayacağını belirler.
Rastgelelik gerçekte nasıl üretilir? Tarayıcınız, Math.random() gibi bir JavaScript PRNG'si yerine Web Crypto API aracılığıyla kriptografik olarak güçlü rastgele değerler sağlar. “Oluştur”a bastığınızda, sayfa crypto.getRandomValues aracılığıyla rastgele değerler ister ve bunları seçtiğiniz aralıkta sayılar üretmek için kullanır. Rastgeleliğin temel kaynağı, işletim sisteminin sağladığı güvenli rastgelelik kaynağıdır, bu yüzden sayfanın kendi seed değerini veya sözde rastgele bir diziyi saklamasına gerek yoktur.
Ham bir değeri aralığınıza eşlemek, üreteçlerin sessizce yanıldığı yerdir ve kendi başına bir paragrafı hak eder. Değerin aralığın büyüklüğüne bölümünden kalanı almak açık ama aynı zamanda taraflı bir yaklaşımdır: 2^32 aralığın büyüklüğüne tam bölünmüyorsa, en düşük sayılar diğerlerinden biraz daha sık çıkar. Bu kusura modulo bias denir ve bu, kuramsal değil ölçülebilir bir sorundur. Bu üreteç bunun yerine aralığın en büyük tam katının ötesindeki her değeri eler ve yeniden üretir — bu tekniğe rejection sampling denir. Bu, birkaç ek denemeye mal olur ama karşılığında kesin bir garanti verir: “Min” ile “Maks” arasındaki her sayı tamamen aynı olasılığa sahiptir, neredeyse aynı değil.
Bir sayıyı gerçekten rastgele yapan şey nedir? Bir sonuç, önceki sonuçlar bir sonraki hakkında hiçbir bilgi vermediğinde rastgele kabul edilebilir — ve pratikte bunun üç düzeyi vardır. Math.random() gibi sıradan bir sözde rastgele fonksiyon deterministik bir algoritma çalıştırır: iç durumunu öğrenen herkes tüm diziyi yeniden oluşturabilir, bu da onu bir sunumun slaytlarını karıştırmak için uygun, ancak sonucun tahmin edilebilir olmaması gereken hiçbir şey için uygunsuz kılar. Kriptografik olarak güvenli bir üreteç (CSPRNG) — bu aracın kullandığı düzey — de bir algoritmadır, ama sistemin güvenli bir rastgelelik kaynağını kullanarak tahmin edilemez değerler üretecek şekilde tasarlanmıştır ve çıktıları gözlemlemek bir sonraki değer hakkında hiçbir şey ortaya çıkarmayacak şekilde tasarlanmıştır. Atmosferik gürültü veya radyoaktif bozunma gibi kaynaklardan gelen fiziksel rastgelelik ise her iki düzeyin de üzerinde yer alır, ancak bir aralıktan sayı üretmek söz konusu olduğunda pratik fark ortadan kalkar. Tarayıcıların Math.random()'ı iyileştirmek yerine ayrı bir kripto API'si sunmasının tam nedeni budur: bu ikisi farklı sorunları çözer ve sonucun öngörülemez olması önemli olduğu durumlarda yalnızca biri güvenlidir.
Rastgele bir dizinin insanlara rastgele görünmesi gerekmez. 1 ile 10 arasında on sayı üretin ve düzenli olarak bir tekrar, 7, 7, 8 gibi neredeyse bir çift veya yalnızca yüksek değerlerden oluşan kısa bir dizi göreceksiniz — ve bunların her biri son derece normaldir. Gerçek rastgelelik tahmin edilemezdir, eşit dağılmış değildir: her sayı öncekilerden bağımsız olarak çıkar, önceki sayıların sonrakiler üzerinde kesinlikle hiçbir etkisi yoktur ve hiçbir sayı diğerinden daha fazla “sırası gelmiş” değildir. Aksini iddia eden içgüdü kumarbaz yanılgısıdır ve bu, insanların kendileri rastgele sayı dizileri oluştururken de aynı hataya düşmesine neden olur — bizden rastgele bir dizi uydurmamız istendiğinde, tekrarlardan kaçınırız ve değerleri şansın hiçbir zaman yapmayacağı kadar eşit dağıtırız. Şüphe uyandıracak kadar düzenli görünen bir sonuç, bir insanın parmak izidir; gerçek rastgelelik kümeler oluşturur.
Bu rastgele sayı üretecini neden seçmelisiniz?
- Yalnızca tarayıcıda üretim: sayılar cihazınızda oluşturulur ve hiçbir yere gönderilmez
- Web Crypto API üzerinden rastgelelik: Math.random() değil, kriptografik olarak güvenli
- Modulo bias yok: rejection sampling, aralıktaki her sayı için eşit olasılığı korur
- Herhangi bir aralık: 1'den 10'a, milyarlara uzanan değerlere kadar, her iki sınır da dahil
- “Tekrarsız” modu: çekilişler ve insanları farklı gruplara ayırmak için tekrarsız bir liste üretin
- Birden fazla set: tek tıkla birden fazla bağımsız çekiliş
- Sıralama ve çıktı biçimleri: artan veya azalan, yeni satır, boşluk veya virgül
- Geçmiş ve dosyaya kaydetme: doğrulamanız gerekebilecek bir çekilişin kaydını tutun
- Sınırsız ve ücretsiz: kayıt gerekmez, kullanım sınırı yok, sunucularımızda hiçbir şey saklanmaz
Rastgele sayılar çoğu insanın tahmin ettiğinden çok daha fazla yerde kullanılır. Öğretmenler kimseyi kayırmadan öğrencileri çağırır. Yayıncılar ve pazarlama ekipleri, sonuca inanması gereken bir izleyici kitlesi önünde hediye ve çekiliş kazananlarını belirler. Oyuncular kaybolan bir zarın yerini alır veya kimin ilk başlayacağına karar verir, turnuvalarda ise başlangıç sırası çekilişle belirlenir. Araştırmacılar, bulgularının araştırmaya katılmayan kişiler için de geçerli olabilmesi için rastgele bir örneklem seçer. Geliştiriciler test verileri üretir, simülasyonlar için bir tohum (seed) belirler ve QA sırasında tanımlayıcılar seçer. Ortak nokta, sonradan açıklanabilecek rastgele bir seçim sürecidir: çekiliş kriptografik rastgelelik kullandığı ve tamamen cihazınızda gerçekleştiği için, biri sonucu sorgularsa sonucun nasıl üretildiğini gösterebilirsiniz.
Bu üretecin bilinmeye değer birkaç makul sınırı vardır. “Tekrarsız” modu, aralığın içerdiğinden fazla sayı üretemez: 1 ile 10 arasında yirmi benzersiz değer basitçe mevcut değildir. Çekilişler bağımsızdır ve önceki sonuçlar sonrakileri etkilemez, bu yüzden sayfayı yenilemek herhangi bir döngüyü sıfırlamaz — çünkü içinde bulunabileceğiniz bir döngü zaten yoktur. Sayılar kriptografik olarak güçlü olsa da, buradaki çekiliş bir tahmin değil, adil bir seçimdir: resmi piyango çekilişleri kendi fiziksel veya sertifikalı ekipmanlarını kullanır ve tarayıcınızda hesaplanan hiçbir şeyin bunlarla bir bağlantısı yoktur. Bu sınırlar dahilinde garanti güçlüdür: aralığınızdaki her sayı, her bir çekilişte tam olarak aynı şansa sahiptir.