Abstrak Bilangan acak semu banyak digunakan dalam perancangan perangkat lunak komputer. Artikel ini memperkenalkan prinsip umum pembuatan bilangan acak semu, dan penggunaan kelas Random serta metodenya yang disediakan dalam ASP.NET Framework untuk menghasilkan bilangan acak dalam berbagai rentang yang memenuhi berbagai persyaratan. Akhirnya, dikombinasikan dengan bentuk kontrol Web, penerapan angka acak di ASP.NET dalam desain perangkat lunak dijelaskan.
Kata kunci ASP.NET; pembuatan bilangan acak semu; Web;
Bilangan acak seperti acak banyak digunakan dalam desain perangkat lunak, khususnya di bidang simulasi dan pengujian lingkungan praktis. Untuk mengejar urutan yang benar-benar acak, orang telah menggunakan banyak metode fisik primitif untuk menghasilkan urutan terdistribusi secara seragam yang memenuhi akurasi (jumlah bit) dalam rentang tertentu. Kekurangannya adalah: kecepatan lambat, efisiensi rendah, memerlukan penyimpanan dalam jumlah besar ruang, dan tidak tersedia. Untuk memenuhi kebutuhan penelitian simulasi komputer, orang beralih ke penelitian tentang penggunaan algoritma untuk menghasilkan urutan pseudo-acak yang mensimulasikan berbagai distribusi probabilitas. Bilangan acak semu mengacu pada bilangan acak yang dihasilkan oleh rumus rekursi matematika. Dari sudut pandang praktis, cara paling sederhana dan alami untuk mendapatkan angka-angka tersebut adalah dengan menggunakan generator angka acak yang disediakan oleh perpustakaan bahasa komputer. Lingkungan pengembangan yang berbeda menyediakan fungsi dan metode yang berbeda untuk menghasilkan angka acak. Biasanya, ini menghasilkan variabel pseudorandom yang nilainya terdistribusi secara merata antara 0 dan 1.
Generator angka acak adalah
metode menghasilkan angka acak di komputer, sering kali menggunakan rumus berikut:
Program yang menggunakan rumus ini untuk menghasilkan barisan bilangan acak a1, a2,... dari 0 hingga 65536 disebut pembangkit bilangan acak harmonik perkalian 232 langkah. Diantaranya, b, c, dan d adalah bilangan bulat positif, dan d disebut benih barisan acak yang dihasilkan oleh rumus.
Terlihat dari rumus ini bahwa setelah parameter b, c, dan d ditentukan maka barisan acak yang dihasilkan juga ditentukan. Urutan yang hanya memenuhi keacakan sampai batas tertentu disebut bilangan pseudo-acak.
Di bawah ini adalah contoh generator angka acak. Diantaranya, fungsi random_seed memungkinkan pengguna untuk memilih benih dari bilangan acak. Ketika parameter formal d=0, waktu sistem saat ini digunakan sebagai benih bilangan acak; ketika d≠0, d dipilih sebagai seed; fungsi random didasarkan pada seed yang diberikan, hitung seed baru dan hasilkan angka acak baru dalam kisaran rendah ~ tinggi.
#tentukan PENGGANDA 0x015A4E35L
#define INCREMENT 1
void random_seed(unsigned long d){
jika (d==0)benih = waktu(0);
lain benih = d;}
unsigned int acak (unsigned long low, unsigned long high)
{
benih = PENGGANDA * benih + KENAIKAN;
return ((benih>>16)% (tinggi-rendah) + rendah);
}
}
Mekanisme pembangkitan bilangan acak semu di ASP.NET
membuat komputer tidak dapat menghasilkan bilangan acak sepenuhnya. Yang disebut penghasil bilangan acak menggunakan algoritma tertentu untuk melakukan operasi kompleks pada benih acak yang telah dipilih sebelumnya, dan menggunakan hasil yang dihasilkan untuk kira-kira mensimulasikan bilangan acak semacam ini disebut bilangan acak semu. Bilangan acak semu dipilih dari sekumpulan bilangan berhingga dengan probabilitas yang sama. Angka-angka yang dipilih tidak sepenuhnya acak, tetapi cukup acak untuk tujuan praktis.
1. Fungsi bawaan VB.NET
Program ASP.NET dapat menggunakan berbagai bahasa pemrograman. Bahasa pemrograman default adalah VB.NET. Meskipun VB.NET dan VB agak mirip, lingkungan aplikasinya berbeda dan metode penulisannya kodenya berbeda. Ada perbedaan juga. Di VB.NET, jika Anda ingin menggunakan fungsi matematika, Anda harus lulus kelas Math yang disediakan oleh .NET Framework, yang terletak di bawah namespace System. Pengguna dapat menambahkan Imports System.Math di bagian atas kode untuk menggunakan ini fungsi matematika.
Prototipe fungsi yang digunakan untuk menghasilkan bilangan acak adalah: Rnd(x). Fungsi ini digunakan untuk menghasilkan bilangan acak presisi tunggal antara 0 dan 1. x adalah benih untuk menghasilkan angka acak. Jika Anda ingin memilih angka secara acak dari rentang (min, maks), Anda perlu menggunakan rumus: angka acak = (maks - min) * Rnd(x) + min.
Pemilihan bilangan pseudo-acak dimulai dari benih acak. Untuk memastikan bahwa bilangan acak semu yang diperoleh setiap kali cukup “acak”, pemilihan benih acak sangatlah penting. Jika benih acak yang dipilih sama, maka rangkaian acak yang dihasilkan juga akan sama. Umumnya, parameter yang terkait dengan waktu sistem digunakan sebagai benih acak, yang juga merupakan metode default yang digunakan oleh pembuat angka acak di .net Framework.
2. Kelas bilangan acak System.Random
Kelas bilangan acak Kelas System.Random menyediakan metode berikut untuk menghasilkan berbagai bilangan acak yang memenuhi persyaratan berbeda, seperti yang ditunjukkan pada Tabel 1:
Tabel 1 Berbagai metode yang disediakan oleh kelas System.Random
nomor seri | nama metode | Deskripsi fungsi |
1 | Berikutnya() | Mengembalikan bilangan bulat antara 0 dan 2147483647 |
2 | Berikutnya (i) | Mengembalikan bilangan bulat antara 0 dan i |
3 | Selanjutnya(i,j) | Kembalikan bilangan bulat antara i~j |
4 | Berikutnyaganda() | Mengembalikan angka desimal acak antara 0 dan 1 |
5 | Berikutnyaganda(byte()) | Gunakan bilangan bulat acak antara 0 dan 255 sebagai nilai setiap elemen array byte. |
Menggunakan kelas bilangan acak System.Random harus dideklarasikan terlebih dahulu. Jika Anda ingin menggunakan metode Nextbytes(byte()), Anda juga harus mendeklarasikan array byte sebelum menggunakannya.
3. Penulisan program pengujian
harus menetapkan lingkungan pengembangan dan pengoperasiannya sebelum menjalankan program ASP.NET, termasuk mengkonfigurasi Microsoft IIS dan menginstal .NET Framework SDK dan editor MSE mesin. Editor MSE adalah perangkat lunak tambahan untuk Microsoft Office dan sangat berguna sebagai alat pengeditan untuk ASP.NET. Kode program pengujiannya adalah sebagai berikut:
<script bahasa = "vb" runat = "server">
sub page_load (kirim sebagai objek, dan sebagai eventargs)
redupkan r1 sebagai acak = acak baru()
respon.write("Hasil dari r1.next()adalah:"+r1.next().tostring())
respon.write("Hasil darir1.next(100)adalah:" +r1.next(100).tostring())
respon.write("Hasil dari r1.next(100,150) adalah:"+r1.next(100,150).tostring())
respon.write("Hasil dari r1.nextdouble() adalah:"+r1.nextdouble().tostring())
r1.nextbytes(r) // meredupkan r(300) sebagai byte
respon.write("r(100) adalah:")
respon.tulis(r(199))
sub akhir </script>
Hasil pengujian ditunjukkan pada Gambar 1:
Gambar 1 Hasil menjalankan uji bilangan acak semu
Contoh
analisis kebutuhan pengembangan aplikasi: Membuat aplikasi untuk simulasi permainan dadu. Dalam permainan ini, pemain melempar sebuah dadu secara acak. Setiap dadu mempunyai enam sisi, masing-masing mewakili enam titik 1, 2, 3, 4, 5, dan 6. Ketika dadu berhenti, lihatlah angka pada permukaan atas dadu. Jika jumlah lemparan adalah 6, pesan pemenang akan ditampilkan, jika tidak, lemparan akan dilanjutkan.
1. Teknologi utama
1.1 Formulir kontrol web
Formulir kontrol web memiliki karakteristik berorientasi objek dari bahasa tingkat tinggi. Ini adalah objek namespace System.Web.UI.WebControls di ASP.NET. Proses pemrosesannya mirip dengan formulir kontrol HTML, dengan karakteristik sebagai berikut: formulir berjalan di sisi server; semua kolom input adalah kontrol, dengan properti dan metode yang kuat dan kaya, dan informasi dari kolom input dapat dipertahankan; ia memiliki kemampuan untuk memverifikasi bidang input; Berisi kontrol tampilan data, dll.
Kode formulir kontrol Web yang khas adalah sebagai berikut:
<asp: button id="sub3" text="confirm" runat="server"/>
Diantaranya, ASP: XXX menunjukkan jenis kontrol Web yang ditunjukkan oleh atribut ID nama identifikasi kontrol; Nilai atribut Runat adalah server, yang menunjukkan bahwa ini adalah kontrol yang berjalan di sisi server.
Kontrol Web yang akan digunakan dalam contoh ini sebagian besar adalah kontrol tombol. Kontrol Gambar digunakan untuk menampilkan file gambar dan memiliki atribut berikut: Imageurl, menunjukkan URL file gambar; Lebar, lebar tampilan file gambar; Tinggi, tinggi tampilan file gambar, dll.
1.2 Pembangkitan bilangan acak semu
Sesuai dengan uraian analisis persyaratan, untuk mensimulasikan titik-titik yang diperoleh dengan melempar dadu secara acak, perlu dibangkitkan bilangan bulat secara acak mulai dari 1 sampai 6. Dalam hal ini, metode Berikutnya (i, j) dari kelas System.Random dapat digunakan, di mana i=1, j=7. (Penulis menulis program pengujian dan menemukan bahwa jika j=6, bilangan acak yang dihasilkan adalah antara 1 dan 5)
2. Implementasi program
Kode utama program adalah sebagai berikut:
<script Language="vb" runat="server ">
sub disp(obj sebagai objek,e sebagai eventargs)
redupkan r1 sebagai acak =random baru() //Tentukan kelas angka acak
dim file_prefix sebagai string = "Gambarmati"
redupkan file_suffix sebagai string = ".png"
value = r1. next(1,7) //redupkan nilai sebagai Integer
s1 = file_prefix + value.tostring() + file_suffix
pic1.imageurl = s1 //Perbarui atribut imageurl dari kontrol Gambar
jika nilai = 6 maka
disp.text = " Anda menang" / /Tampilkan informasi cepat
else
disp.text = "Coba lagi"
end if
end sub
</script>
<form id="form1" runat="server"><br>
<asp:button id="disp" runat="server " onclick="disp" text="start"/>
<asp:image id="pic1" runat="server" width="50" height="50"/></form>
Hasil yang berjalan dari program ini ditunjukkan pada Gambar 2 Tampil:
Gambar 2 Hasil menjalankan program
Kesimpulan
Bilangan acak semu digunakan di banyak tempat dalam aplikasi web. Bagaimana memilih parameter benih untuk menghasilkan barisan acak, dan algoritma acak mana yang digunakan untuk menghasilkan barisan acak semu dengan kinerja yang lebih baik adalah perangkat lunak komputer. pengembang. Menggunakan kelas pembuatan angka pseudo-acak yang disediakan oleh kerangka ASP.NET dan metode fungsi yang disediakan oleh bahasa skrip VB.NET, berbagai urutan acak yang memenuhi persyaratan berbeda dapat dihasilkan. Misalnya, kode pemeriksaan acak yang digunakan untuk otentikasi identitas dalam sistem Web menggunakan teknologi pembuatan nomor acak. Ada banyak artikel di situs ini, jadi saya tidak akan membahas detailnya di sini.