Rastgele sayı üretici
Sonuçların dağılımı
Tekdüzelik testi
Testi çalıştırmak için daha dar bir aralıkta daha çok sayı çekin.
Son çekilişler
Kayıtlı ayarlar
Rastgele Sayı Üreteci Nasıl Çalışır?
Üreteç size iki rastgelelik kaynağı sunar; işinize uygun olanı siz seçersiniz.
Güvenli rastgelelik, Web Crypto API (crypto.getRandomValues()) aracılığıyla işletim sisteminizden entropi çeker. Tahmin edilemez ve tekrarlanamazdır — sonucun kimse tarafından önceden tahmin edilememesi gereken gerçek bir çekiliş için doğru seçimdir.
Seed’li mod, yazdığınız herhangi bir metni deterministik bir üretecin (xoshiro128**) başlangıç durumuna dönüştürür. Aynı seed her zaman aynı sayıları üretir, böylece herkes çekilişinizi tekrarlayarak sonucun iddia ettiğiniz gibi olduğunu doğrulayabilir.
Her ikisi de tamamen tarayıcınızda çalışır. Hiçbir sayı sunucuya ulaşmaz.
Modulo yanlılığı yok
Çoğu basit üreteç, rastgele bir 32 bit değeri value % range ile aralığınıza eşler. Aralık 2³²’yi tam bölmediğinde, en düşük sayılar diğerlerine göre biraz daha sık gelir. Binlerce çekilişte bu fark ölçülebilir hale gelir.
Bu üreteç bunun yerine reddetme örneklemesi (rejection sampling) kullanır: eşit olmayan kuyruğa düşecek değerler atılır ve yeniden çekilir. Aralığınızdaki her sayının tam olarak aynı şansı vardır. Bunu yerleşik tekdüzelik testiyle kendiniz doğrulayabilirsiniz.
Üretecin yapabildikleri
Aralık
- Minimum ve maksimum — herhangi bir tam sayı veya ondalık aralık, negatif değerler dahil
- Kaç sayı — tek çekilişte 1’den 1.000.000’a kadar
- Tekrarsız — her sayı en fazla bir kez görünür, gerçek bir çekilişte olduğu gibi
- Sıralama — çekiliş sırası, artan veya azalan; sıralama rastgeleliği asla etkilemez
- Adım — sonuçları bir değerin katlarıyla sınırlayın, böylece yalnızca 0, 5, 10, 15 gibi sayılar gelir
- Hariç tutulan sayılar — asla çekilmemesi gereken değerlerin listesi
Mod
- Rastgelelik kaynağı — güvenli (Web Crypto) veya seed’li (tekrarlanabilir)
- Seed — herhangi bir metin; aynı seed her zaman aynı çekilişi tekrarlar
- Dağılım — tekdüze, normal (Gauss), üstel, Poisson, üçgensel, binom
- Ağırlıklar — seçilen sayılara daha yüksek şans verin,
number:weightbiçiminde yazılır - Zar notasyonu —
3d6+2,d20, avantaj için2d20kh1, karakter özellikleri için4d6dl1
Çıktı
- Ayırıcı — virgül, boşluk, noktalı virgül, sekme, yeni satır veya yazdığınız herhangi bir şey
- Sayı sistemi — ondalık, ikili, sekizli, on altılı veya taban 36
- Sıfırla doldurma — bilet veya kimlik numaraları için 7’yi 007’ye dönüştürün
- Önek ve sonek — her sayıyı sabit bir metinle sarın
- Şablon —
{n}sayıyı,{i}konumunu temsil eder, böyleceuser{n}user42olur - Farklı kopyala — düz metin, CSV, JSON veya Markdown tablosu
İstatistikler
Her çekiliş canlı olarak özetlenir: toplam, ortalama, medyan, en düşük, en yüksek, standart sapma ve kaç sonucun çift, tek veya asal olduğu. Bir histogram dağılımın şeklini gösterir ve bir ki-kare testi sonuçların gerçekten tekdüze bir dağılıma uyup uymadığını söyler.
Geçmiş
Son 50 çekiliş, onları üreten ayarlarla birlikte tarayıcınızda saklanır — tek tıkla herhangi birini geri yükleyebilirsiniz. Sık kullandığınız yapılandırmaları adlandırılmış ön ayarlar olarak kaydedebilir ve tümünü, başka bir makineye içe aktarabileceğiniz bir JSON dosyasına dışa aktarabilirsiniz. Hiçbir şey bu tarayıcı dışında bir yerde saklanmaz.
Klavye
Fareye uzanmadan yeniden çekmek için Boşluk veya R tuşuna basın.
Hızlı ön ayarlar
| Ön Ayar | Aralık | Adet | Kullanım |
|---|---|---|---|
| 🎲 Zar | 1–6 | 1 | Masa oyunları, karar verme |
| 🪙 Yazı Tura | 0–1 | 1 | Tura veya yazı |
| 🎰 Piyango | 1–49 | 6 | Benzersiz, sıralı, gerçek bir çekiliş gibi |
| 💯 1–100 | 1–100 | 1 | Yüzdeler, A/B bölünmeleri |
| 🔢 PIN | 0–9 | 4 | Dört basamak, tekrara izin verilir |
Tekrarlanabilir çekilişler
Seed’li mod, “güven bana, rastgeleydi” demenin yeterli olmadığı anlar için var.
Herkesin önceden üzerinde anlaşabileceği bir seed seçin — bir tarih, bir hashtag, herkese açık bir şeyin kapanış fiyatı — ve çekilişten önce bunu duyurun. Herkes daha sonra aynı ayarlarla aynı seed’i yazarak birebir aynı sonucu elde edebilir. Bununla sayıların tahmin edilemez olduğunu değil, beğendiğiniz cevabı bulana kadar tekrar tekrar çekmediğinizi kanıtlamış olursunuz.
Bu aynı zamanda, kontrol edilmesi gereken işlerde rastgeleliği tekrarlanabilir hale getirmenin yoludur: bir meslektaşınızın yeniden çalıştırabileceği bir örnekleme planı, test paketinde sabit kalan bir dizi test sabit verisi (fixture), her öğrencinin aynı “rastgele” veriyi aldığı bir sınıf etkinliği.
Dağılım seçimi
Tekdüze dağılım, aralıktaki her sayıya aynı şansı verir. İnsanların genellikle rastgele derken kastettiği budur ve varsayılan seçenektir.
Diğerleri sonuçları bir değerin etrafında toplar; gerçek dünyadaki büyüklüklerin genel eğilimi de budur:
- Normal (Gauss) — boylar, ölçüm hataları, test puanları. Bir ortalama ve standart sapma ayarlayın.
- Üstel — bağımsız olaylar arasındaki bekleme süreleri.
- Poisson — sabit bir aralıktaki olay sayıları: saat başına varışlar, parti başına kusurlar.
- Üçgensel — minimum, maksimum ve en olası değeri bildiğiniz ama başka bir şey bilmediğiniz durumlarda. Proje tahminlerinde yaygındır.
- Binom — sabit bir olasılıkla sabit sayıda denemeden elde edilen başarılar.
Her dağılım belirlediğiniz aralığa sıkıştırılır, böylece uzun bir Gauss kuyruğu minimum ve maksimum değerlerinizin dışına çıkamaz.
Rastgele sayılar nerelerde kullanılır
Oyunlar ve eğlence
- Masa oyunları — zar atma, sıra düzeni
- Masaüstü RPG’ler — özellik puanları için
4d6dl1, avantaj için2d20kh1 - Çekilişler — katılımcıların doğrulayabilmesi için seed ile kazanan seçimi
- Quizler — rastgele soru sırası
İstatistik ve bilim
- Örnekleme — bir popülasyondan tekrarsız örnek çekme
- A/B testi — katılımcıları gruplara atama
- Monte Carlo simülasyonu — tekrar yoluyla olasılık tahmini
- Bootstrapping — belirsizliği tahmin etmek için yeniden örnekleme
Geliştirme
- Test verileri — sayfanın duyarlı kalması için arka planda üretilen bir milyon değer
- Fixture’lar — seed’li, böylece başarısız bir test iki kez aynı şekilde başarısız olur
- Rastgele kimlikler — doldurma, önek veya şablon ile
- Yük testi —
user{n}@example.comgibi şablonlanmış tanımlayıcılar
Gerçek ve sözde rastgele sayılar
Math.random() | crypto.getRandomValues() | Seed’li (xoshiro128**) | |
|---|---|---|---|
| Tip | Sözde rastgele | Kriptografik olarak güvenli | Sözde rastgele, deterministik |
| Entropi kaynağı | Motorun seçtiği tohum | Sistem CSPRNG’si | Seed metniniz |
| Tahmin edilebilir mi? | Potansiyel olarak | Hayır | Evet, tasarım gereği |
| Tekrarlanabilir mi? | Hayır | Hayır | Her zaman |
| Güvenlik için uygun | Hayır | Evet | Hayır |
| İstatistik için uygun | Değişir | Evet | Evet |
| Doğrulanabilir çekilişler için uygun | Hayır | Hayır | Evet |
Math.random() bu araçta hiçbir yerde kullanılmaz.
Tekrarsız çekilişler
Tekrarsız seçeneği etkinleştirildiğinde, aralıktaki her sayı en fazla bir kez görünür. Şunlar için idealdir:
- Çekilişler — kimse iki kez kazanamaz
- Permütasyonlar — bir öğe kümesinin karıştırılması
- Tombala — bir kez çağrılan sayının tekrar çağrılmaması
- Piyango — 1’den 49’a kadar altı farklı sayı
Çekiliş kısmi bir Fisher–Yates karıştırması kullanır, bu nedenle bir milyon içinden 6 sayı istemek, 49 içinden 6 sayı istemek kadar hızlıdır — çakışmayı önlemek için asla döngüye girmez. Aralığın sağlayabileceğinden daha fazla benzersiz sayı isterseniz, üreteç takılıp kalmak yerine bunu bildirir.
Sonuçları dışa aktarma
Sayıları istediğiniz ayırıcıyla düz metin olarak, elektronik tablo için CSV, kod için JSON veya dokümantasyon için Markdown tablosu olarak kopyalayın. Ekranda yalnızca ilk birkaç bin sayı gösterilse bile, çok büyük çekilişler belleğe tam olarak alınır ve tam olarak kopyalanır.
Kendi kodunuzda rastgele sayı üretme
JavaScript / TypeScript
// [min, max] aralığında modulo yanlılığı olmayan kriptografik olarak güvenli tam sayı.
// Basit `value % range` yaklaşımı, aralık 2**32'yi tam bölmediğinde düşük sayıları
// kayırır - bu yüzden eşit olmayan kuyruğa düşen değerleri reddediyoruz.
function randomInt(min, max) {
const range = max - min + 1;
const limit = Math.floor(0x100000000 / range) * range;
const arr = new Uint32Array(1);
let value;
do {
crypto.getRandomValues(arr);
value = arr[0];
} while (value >= limit);
return min + (value % range);
}
Python
import random
import secrets
# Kriptografik olarak güvenli, modulo yanlılığı yok
n = secrets.randbelow(max - min + 1) + min
# Tekrarlanabilir: aynı seed her zaman aynı diziyi verir
rng = random.Random('my-seed')
n = rng.randint(min, max)
# Tekrarsız
sample = random.sample(range(min, max + 1), count)
PHP
// Kriptografik olarak güvenli (PHP 7+), modulo yanlılığı yok
$n = random_int($min, $max);
// Tekrarlanabilir
mt_srand(crc32('my-seed'));
$n = mt_rand($min, $max);
Sıkça sorulan sorular (SSS)
Sonuç gerçekten rastgele mi?
Güvenli modda evet. Sonuçlar, işletim sisteminizin entropi havuzuyla beslenen kriptografik olarak güvenli bir üreteç olancrypto.getRandomValues()'tan gelir. Sonuçlar tekdüze dağılmıştır ve tahmin edilemez. Seed'li mod bilerek tam tersidir: amaç zaten tekrarlanabilir olmasıdır.
Aynı anda kaç sayı oluşturabilirim?
1.000.000'a kadar. 50.000'in üzerindeki çekilişler, sayfanın duyarlı kalması için arka planda bir worker tarafından hesaplanır ve ekranda ilk 2.000 sayı, geri kalanının sayısıyla birlikte gösterilir — kopyalama işlemi yine de her şeyi verir.Negatif sayılar oluşturabilir miyim?
Evet. Negatif bir minimum ayarlayın. JavaScript sayılarının tüm aralığı çalışır, her iki uçta da negatif aralıklar dahil.Sıralama rastgeleliği etkiler mi?
Hayır. Sayılar önce çekilir, ardından sıralanır. Sıralama yalnızca gördüğünüz sırayı değiştirir.Aynı seed yarın da aynı sayıları verir mi?
Evet, başka herhangi bir cihazda veya tarayıcıda da. Seed'li üreteç tamamen deterministiktir ve yalnızca seed'inize ve ayarlarınıza bağlıdır.Tekdüzelik testi bana ne söyler?
Her sayının gerçekte kaç kez geldiğini, kaç kez gelmesi gerektiğiyle karşılaştıran bir ki-kare testi çalıştırır. İstatistik kritik değerin altında kalırsa, sonuçlar tekdüze bir dağılımla tutarlıdır. Anlamlı bir sonuç için makul derecede dar bir aralık ve yeterli sayıda çekiliş — mümkün her değer için en az beş — gerekir.Ağırlıklar nasıl çalışır?
Bunlarınumber:weight çiftleri olarak yazın, örneğin 1:5, 2:1, 3:1. Burada 1'in gelme olasılığı 2 veya 3'ten beş kat fazladır. Listelemediğiniz sayıların ağırlığı sıfırdır ve asla çekilmezler.
Hangi zar notasyonu destekleniyor?
3d6 üç adet altı yüzlü zar atar. 3d6+2 ile bir değiştirici ekleyin. Zarları kh, kl, dh, dl ile tutun veya atın — böylece 2d20kh1 iki d20'den en yüksek olanı tutar (avantaj) ve 4d6dl1 dört d6'dan en düşük olanı atar.