Lebih sederhana, tergantung pada kecepatan generator acak Anda, Anda hanya dapat menghasilkan dua nilai dan rata-rata.
Atau, bahkan lebih sederhana, di mana X adalah hasil dari Ping, pertama double y = double(1/x);
, x = y*[maximum return value of rng];
. Ini akan menimbang angka secara eksponensial ke angka yang lebih rendah.
Hasilkan dan ratakan lebih banyak nilai untuk meningkatkan kemungkinan mendapatkan nilai lebih dekat ke pusat.
Tentu saja ini hanya berfungsi untuk distribusi kurva lonceng standar atau versi "terlipat" *, tetapi dengan generator cepat, mungkin lebih cepat dan lebih sederhana daripada menggunakan berbagai fungsi matematika seperti sqrt.
Anda dapat menemukan segala macam penelitian tentang ini untuk kurva lonceng dadu. Faktanya, Anydice.com adalah situs bagus yang menghasilkan grafik untuk berbagai metode rolling dadu. Meskipun Anda menggunakan RNG, premisnya sama, seperti hasilnya. Jadi ini adalah tempat yang bagus untuk melihat distribusi bahkan sebelum mengkodekannya.
* Selain itu, Anda dapat "melipat" distribusi hasil di sepanjang sumbu dengan mengambil sumbu dan mengurangi hasil rata-rata kemudian menambahkan sumbu. Misalnya, Anda ingin nilai yang lebih rendah menjadi lebih umum, dan katakanlah Anda ingin 15 menjadi nilai minimum Anda dan 35 menjadi nilai maksimal Anda, kisaran 20. Jadi, Anda menghasilkan dan rata-rata bersama dua nilai dengan kisaran 20 ( dua kali rentang yang Anda inginkan), yang akan memberikan bellcurve yang berpusat pada 20 (kami kurangi lima di akhir untuk menggeser kisaran dari 20 menjadi 40, menjadi 15 hingga 35). Ambil angka yang dihasilkan X dan Y.
Angka terakhir,
z =(x+y)/2;// average them
If (z<20){z = (20-z)+20;}// fold if below axis
return z-5;// return value adjusted to desired range
Jika nol adalah minimum Anda, bahkan lebih baik, lakukan ini sebagai gantinya,
z= (x+y)/2;
If (z<20){z = 20-z;}
else {z = z - 20;}
return z;