Contoh -contoh dalam artikel ini berbagi dengan Anda algoritma lotere Java untuk referensi Anda. Konten spesifiknya adalah sebagai berikut
1. Analisis Algoritma
Hadiah dibagi menjadi interval sesuai dengan probabilitas. Setiap interval mewakili hadiah, dan kemudian angka acak ditarik dan interval diperiksa terbalik, yang merupakan hadiah yang ditarik.
2. Kode
Algoritma inti
Public Class Arithmetic {// Pembesaran Private Static Final Int Mulriple = 1000000; public int gaji (Daftar <PRize> harga) {int lastscope = 0; // shuffle, ganggu koleksi pesanan hadiah.shuffle (hadiah); Peta <integer, int [] >> priceScopes = hashmap baru <integer, int []> (); Peta <Integer, Integer> PricingQuantity = HashMap baru <Integer, Integer> (); untuk (harga hadiah: hadiah) {int priceId = price.getPrizeId (); // Partisi interval int aruscope = lastscope + price.getProbability (). Multiply (BigDecimal baru (Mulriple)). IntValue (); priceScopes.put (hadiah, int baru [] {lastscope + 1, currentscope}); pricequantity.put (hadiah, harga.getquantity ()); lastscope = Currentscope; } // Dapatkan nomor acak antara 1-1000000 int luckynumber = baru acak (). NextInt (Mulriple); int luckyPrizeIdED = 0; // Temukan interval di mana nomor acak berada jika ((null! = PriceScopes) &&! Prizescopes.isempty ()) {set <entri <integer, int [] >> entrysets = priceScopes.entryset (); untuk (map.entry <integer, int []> m: entriSets) {int key = m.getKey (); if (luckynumber> = m.getValue () [0] && luckynumber <= m.getValue () [1] && pricequantity.get (key)> 0) {luckyPrizeId = key; merusak; }}} if (luckyPrizeId> 0) {// Kurangi inventaris hadiah dengan satu} return luckyPrizeId; }} Hadiah kacang
Hadiah Kelas Publik { / *** Label Unik untuk Hadiah* / Private Integer PrizeID; / *** probabilitas kemenangan*/ probabilitas privat besar; / *** Jumlah hadiah*/ kuantitas bilangan bulat pribadi; Public Integer getPrizeId () {return cemberiD; } public void setPRizeId (integer hadiah) {this.prizeId = hadiah; } public BigDecimal getProbability () {probabilitas pengembalian; } public void setProbability (probabilitas BigDecimal) {this.probability = probabilitas; } public integer getquantity () {return kuantitas; } public void setquantity (integer kuantitas) {this.quantity = kuantitas; }} 3. Tes
Hadiah1 Probabilitas: 5%
Probabilitas hadiah2: 10%
Probabilitas Hadiah3: 15%
Probabilitas Hadiah4: 20%
Probabilitas hadiah5: 50%
tes kelas publik {public static void main (string [] args) {list <pize> pricings = new arraylist <pize> (); Harga hadiah1 = hadiah baru (); harga1.setprizeId (1); harga1.setProbability (BigDecimal baru (0,05)); harga1.setquantity (1); harga.add (hadiah1); Hadiah harga2 = hadiah baru (); Price2.setPrizeId (2); harga2.setProbability (BigDecimal baru (0,10)); harga2.setquantity (10); harga.add (hadiah2); Harga Hadiah3 = Hadiah Baru (); Price3.setPrizeId (3); harga3.setProbability (BigDecimal baru (0,15)); harga3.setquantity (20); harga.add (hadiah3); Harga Hadiah4 = Hadiah Baru (); Price4.setPrizeId (4); harga4.setProbability (BigDecimal baru (0,20)); harga4.setquantity (50); harga.add (hadiah4); Harga Hadiah5 = Hadiah Baru (); Price5.setPrizeId (5); harga5.setProbability (BigDecimal baru (0,50)); harga5.setquantity (200); harga.add (hadiah5); Int Price1getTimes = 0; int price2gettimes = 0; int price3gettimes = 0; Int Price4GetTimes = 0; Int Price5GetTimes = 0; Int Price5GetTimes = 0; Aritmatika aritmatika = aritmatika baru (); int kali = 1000; untuk (int i = 0; i <kali; i ++) {int priceId = arithmetic.pay (hadiah); switch (hadiah) {case 1: price1getTimes ++; merusak; Kasus 2: Price2GetTimes ++; merusak; Kasus 3: Harga3GetTimes ++; merusak; Kasus 4: Harga4GetTimes ++; merusak; Kasus 5: Harga5GetTimes ++; merusak; }} System.out.println ("Jumlah lotre" + kali); System.out.println ("Prize1 menang" + hadiah1gettimes); System.out.println ("Prize2 menang" + hadiah2gettimes); System.out.println ("Prize3 menang" + hadiah3gettimes); System.out.println ("Prize4 menang" + hadiah4gettimes); System.out.println ("Prize5 menang" + hadiah5gettimes); }} hasil:
Melalui 1000 ekstraksi, kita dapat melihat bahwa akurasi algoritma masih sangat tinggi.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.