java實現(xiàn)的根據(jù)概率隨機中獎測試類
本文實例講述了java實現(xiàn)的根據(jù)概率隨機中獎測試類。分享給大家供大家參考,具體如下:
最近要做一個寶箱抽獎的功能 自己先聯(lián)系了一下,分別用 list和set 進行存儲和抽取,做了一個時間消耗的對比,感覺list應該比set讀取的要快些,但是這也不一定,希望大家能夠共同討論。
廢話少說上代碼:
package com.test.testRandom;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Random;
import java.util.Set;
/** 根據(jù)概率獲取獎品的測試類 */
public class TestRandom {
public static void main(String[] args) {
TestRandom tr = new TestRandom();
// 用List隨機
long begin = System.currentTimeMillis();
for (int i = 0; i < 100; i++) {
tr.getGumByList();
}
System.out.println("list使用時間:" + (System.currentTimeMillis() - begin));
// 用set隨機
long begin1 = System.currentTimeMillis();
for (int i = 0; i < 100; i++) {
tr.getGumBySet();
}
System.out.println("set使用時間:" + (System.currentTimeMillis() - begin1));
}
/* Set 獲取 */
void getGumBySet() {
int random = new Random().nextInt(100);
int prizeRate = 0;// 中獎率
Iterator<Gem> it = initSetGems().iterator();
while (it.hasNext()) {
Gem gem = it.next();
prizeRate += gem.getPriority();
if (random < prizeRate) {
System.out.println("獎品為:" + gem.getName() + " 概率:"
+ gem.getPriority() + " 隨機數(shù)random:" + random
+ " 概率基數(shù)prizeRate:" + prizeRate);
break;
}
}
}
/** List 獲取 */
void getGumByList() {
int random = new Random().nextInt(100);
int prizeRate = 0;// 中獎率
Iterator<Gem> it = initGems().iterator();
while (it.hasNext()) {
Gem gem = it.next();
prizeRate += gem.getPriority();
if (random < prizeRate) {
System.out.println("獎品為:" + gem.getName() + " 概率:"
+ gem.getPriority() + " 隨機數(shù)random:" + random
+ " 概率基數(shù)prizeRate:" + prizeRate);
break;
}
}
}
/** 初始化list */
List<Gem> initGems() {
List<Gem> gums = new ArrayList<Gem>();
gums.add(new Gem("20", 20));
gums.add(new Gem("7", 7));
gums.add(new Gem("30", 30));
gums.add(new Gem("24", 40));
gums.add(new Gem("3", 3));
return gums;
}
/** 初始化set */
Set<Gem> initSetGems() {
Set<Gem> gums = new HashSet<Gem>();
gums.add(new Gem("20", 20));
gums.add(new Gem("7", 7));
gums.add(new Gem("30", 30));
gums.add(new Gem("24", 40));
gums.add(new Gem("3", 3));
return gums;
}
/**獎品類*/
class Gem {
/** 獎品名稱 */
private String name;
/** 獎品概率 */
private int priority;
public Gem() {
super();
}
public Gem(String name, int priority) {
super();
this.name = name;
this.priority = priority;
}
@Override
public String toString() {
return "Gum [name=" + name + ", priority=" + priority + "]";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPriority() {
return priority;
}
public void setPriority(int priority) {
this.priority = priority;
}
}
}
運行結果:
獎品為:20 概率:20 隨機數(shù)random:17 概率基數(shù)prizeRate:20
獎品為:30 概率:30 隨機數(shù)random:54 概率基數(shù)prizeRate:57
獎品為:3 概率:3 隨機數(shù)random:99 概率基數(shù)prizeRate:100
獎品為:24 概率:40 隨機數(shù)random:87 概率基數(shù)prizeRate:97
獎品為:24 概率:40 隨機數(shù)random:75 概率基數(shù)prizeRate:97
獎品為:7 概率:7 隨機數(shù)random:21 概率基數(shù)prizeRate:27
獎品為:20 概率:20 隨機數(shù)random:9 概率基數(shù)prizeRate:20
獎品為:24 概率:40 隨機數(shù)random:77 概率基數(shù)prizeRate:97
獎品為:20 概率:20 隨機數(shù)random:10 概率基數(shù)prizeRate:20
獎品為:24 概率:40 隨機數(shù)random:83 概率基數(shù)prizeRate:97
獎品為:30 概率:30 隨機數(shù)random:40 概率基數(shù)prizeRate:57
獎品為:24 概率:40 隨機數(shù)random:78 概率基數(shù)prizeRate:97
獎品為:24 概率:40 隨機數(shù)random:58 概率基數(shù)prizeRate:97
獎品為:30 概率:30 隨機數(shù)random:44 概率基數(shù)prizeRate:57
獎品為:7 概率:7 隨機數(shù)random:26 概率基數(shù)prizeRate:27
獎品為:30 概率:30 隨機數(shù)random:56 概率基數(shù)prizeRate:57
獎品為:24 概率:40 隨機數(shù)random:80 概率基數(shù)prizeRate:97
獎品為:30 概率:30 隨機數(shù)random:50 概率基數(shù)prizeRate:57
獎品為:30 概率:30 隨機數(shù)random:34 概率基數(shù)prizeRate:57
獎品為:30 概率:30 隨機數(shù)random:27 概率基數(shù)prizeRate:57
獎品為:20 概率:20 隨機數(shù)random:4 概率基數(shù)prizeRate:20
獎品為:24 概率:40 隨機數(shù)random:87 概率基數(shù)prizeRate:97
獎品為:20 概率:20 隨機數(shù)random:0 概率基數(shù)prizeRate:20
獎品為:24 概率:40 隨機數(shù)random:96 概率基數(shù)prizeRate:97
獎品為:7 概率:7 隨機數(shù)random:20 概率基數(shù)prizeRate:27
獎品為:30 概率:30 隨機數(shù)random:44 概率基數(shù)prizeRate:57
獎品為:30 概率:30 隨機數(shù)random:50 概率基數(shù)prizeRate:57
獎品為:7 概率:7 隨機數(shù)random:23 概率基數(shù)prizeRate:27
獎品為:24 概率:40 隨機數(shù)random:87 概率基數(shù)prizeRate:97
獎品為:24 概率:40 隨機數(shù)random:93 概率基數(shù)prizeRate:97
獎品為:30 概率:30 隨機數(shù)random:35 概率基數(shù)prizeRate:57
獎品為:24 概率:40 隨機數(shù)random:79 概率基數(shù)prizeRate:97
獎品為:30 概率:30 隨機數(shù)random:41 概率基數(shù)prizeRate:57
獎品為:30 概率:30 隨機數(shù)random:42 概率基數(shù)prizeRate:57
獎品為:24 概率:40 隨機數(shù)random:66 概率基數(shù)prizeRate:97
獎品為:30 概率:30 隨機數(shù)random:50 概率基數(shù)prizeRate:57
獎品為:30 概率:30 隨機數(shù)random:43 概率基數(shù)prizeRate:57
獎品為:24 概率:40 隨機數(shù)random:88 概率基數(shù)prizeRate:97
獎品為:30 概率:30 隨機數(shù)random:41 概率基數(shù)prizeRate:57
獎品為:24 概率:40 隨機數(shù)random:74 概率基數(shù)prizeRate:97
獎品為:24 概率:40 隨機數(shù)random:96 概率基數(shù)prizeRate:97
獎品為:24 概率:40 隨機數(shù)random:90 概率基數(shù)prizeRate:97
獎品為:24 概率:40 隨機數(shù)random:96 概率基數(shù)prizeRate:97
獎品為:20 概率:20 隨機數(shù)random:2 概率基數(shù)prizeRate:20
獎品為:24 概率:40 隨機數(shù)random:68 概率基數(shù)prizeRate:97
獎品為:7 概率:7 隨機數(shù)random:25 概率基數(shù)prizeRate:27
獎品為:20 概率:20 隨機數(shù)random:13 概率基數(shù)prizeRate:20
獎品為:30 概率:30 隨機數(shù)random:52 概率基數(shù)prizeRate:57
獎品為:30 概率:30 隨機數(shù)random:32 概率基數(shù)prizeRate:57
獎品為:30 概率:30 隨機數(shù)random:54 概率基數(shù)prizeRate:57
獎品為:24 概率:40 隨機數(shù)random:71 概率基數(shù)prizeRate:97
獎品為:24 概率:40 隨機數(shù)random:90 概率基數(shù)prizeRate:97
獎品為:3 概率:3 隨機數(shù)random:97 概率基數(shù)prizeRate:100
獎品為:30 概率:30 隨機數(shù)random:52 概率基數(shù)prizeRate:57
獎品為:24 概率:40 隨機數(shù)random:65 概率基數(shù)prizeRate:97
獎品為:24 概率:40 隨機數(shù)random:87 概率基數(shù)prizeRate:97
獎品為:30 概率:30 隨機數(shù)random:35 概率基數(shù)prizeRate:57
獎品為:30 概率:30 隨機數(shù)random:37 概率基數(shù)prizeRate:57
獎品為:30 概率:30 隨機數(shù)random:55 概率基數(shù)prizeRate:57
獎品為:24 概率:40 隨機數(shù)random:77 概率基數(shù)prizeRate:97
獎品為:24 概率:40 隨機數(shù)random:78 概率基數(shù)prizeRate:97
獎品為:30 概率:30 隨機數(shù)random:53 概率基數(shù)prizeRate:57
獎品為:20 概率:20 隨機數(shù)random:4 概率基數(shù)prizeRate:20
獎品為:24 概率:40 隨機數(shù)random:80 概率基數(shù)prizeRate:97
獎品為:20 概率:20 隨機數(shù)random:10 概率基數(shù)prizeRate:20
獎品為:24 概率:40 隨機數(shù)random:69 概率基數(shù)prizeRate:97
獎品為:30 概率:30 隨機數(shù)random:34 概率基數(shù)prizeRate:57
獎品為:24 概率:40 隨機數(shù)random:80 概率基數(shù)prizeRate:97
獎品為:24 概率:40 隨機數(shù)random:68 概率基數(shù)prizeRate:97
獎品為:30 概率:30 隨機數(shù)random:28 概率基數(shù)prizeRate:57
獎品為:24 概率:40 隨機數(shù)random:96 概率基數(shù)prizeRate:97
獎品為:24 概率:40 隨機數(shù)random:66 概率基數(shù)prizeRate:97
獎品為:20 概率:20 隨機數(shù)random:0 概率基數(shù)prizeRate:20
獎品為:24 概率:40 隨機數(shù)random:66 概率基數(shù)prizeRate:97
獎品為:24 概率:40 隨機數(shù)random:95 概率基數(shù)prizeRate:97
獎品為:24 概率:40 隨機數(shù)random:77 概率基數(shù)prizeRate:97
獎品為:20 概率:20 隨機數(shù)random:10 概率基數(shù)prizeRate:20
獎品為:7 概率:7 隨機數(shù)random:24 概率基數(shù)prizeRate:27
獎品為:30 概率:30 隨機數(shù)random:31 概率基數(shù)prizeRate:57
獎品為:24 概率:40 隨機數(shù)random:80 概率基數(shù)prizeRate:97
獎品為:24 概率:40 隨機數(shù)random:68 概率基數(shù)prizeRate:97
獎品為:30 概率:30 隨機數(shù)random:54 概率基數(shù)prizeRate:57
獎品為:30 概率:30 隨機數(shù)random:47 概率基數(shù)prizeRate:57
獎品為:24 概率:40 隨機數(shù)random:66 概率基數(shù)prizeRate:97
獎品為:24 概率:40 隨機數(shù)random:78 概率基數(shù)prizeRate:97
獎品為:30 概率:30 隨機數(shù)random:39 概率基數(shù)prizeRate:57
獎品為:30 概率:30 隨機數(shù)random:55 概率基數(shù)prizeRate:57
獎品為:30 概率:30 隨機數(shù)random:50 概率基數(shù)prizeRate:57
獎品為:30 概率:30 隨機數(shù)random:54 概率基數(shù)prizeRate:57
獎品為:30 概率:30 隨機數(shù)random:33 概率基數(shù)prizeRate:57
獎品為:30 概率:30 隨機數(shù)random:55 概率基數(shù)prizeRate:57
獎品為:24 概率:40 隨機數(shù)random:80 概率基數(shù)prizeRate:97
獎品為:24 概率:40 隨機數(shù)random:72 概率基數(shù)prizeRate:97
獎品為:3 概率:3 隨機數(shù)random:98 概率基數(shù)prizeRate:100
獎品為:24 概率:40 隨機數(shù)random:67 概率基數(shù)prizeRate:97
獎品為:24 概率:40 隨機數(shù)random:82 概率基數(shù)prizeRate:97
獎品為:7 概率:7 隨機數(shù)random:22 概率基數(shù)prizeRate:27
獎品為:24 概率:40 隨機數(shù)random:66 概率基數(shù)prizeRate:97
獎品為:20 概率:20 隨機數(shù)random:7 概率基數(shù)prizeRate:20
獎品為:30 概率:30 隨機數(shù)random:43 概率基數(shù)prizeRate:57
list使用時間:20
獎品為:7 概率:7 隨機數(shù)random:2 概率基數(shù)prizeRate:7
獎品為:24 概率:40 隨機數(shù)random:49 概率基數(shù)prizeRate:60
獎品為:24 概率:40 隨機數(shù)random:58 概率基數(shù)prizeRate:67
獎品為:20 概率:20 隨機數(shù)random:51 概率基數(shù)prizeRate:60
獎品為:24 概率:40 隨機數(shù)random:68 概率基數(shù)prizeRate:80
獎品為:24 概率:40 隨機數(shù)random:30 概率基數(shù)prizeRate:50
獎品為:24 概率:40 隨機數(shù)random:25 概率基數(shù)prizeRate:60
獎品為:20 概率:20 隨機數(shù)random:41 概率基數(shù)prizeRate:60
獎品為:24 概率:40 隨機數(shù)random:63 概率基數(shù)prizeRate:100
獎品為:30 概率:30 隨機數(shù)random:15 概率基數(shù)prizeRate:37
獎品為:30 概率:30 隨機數(shù)random:28 概率基數(shù)prizeRate:30
獎品為:24 概率:40 隨機數(shù)random:80 概率基數(shù)prizeRate:97
獎品為:20 概率:20 隨機數(shù)random:84 概率基數(shù)prizeRate:97
獎品為:3 概率:3 隨機數(shù)random:0 概率基數(shù)prizeRate:3
獎品為:24 概率:40 隨機數(shù)random:62 概率基數(shù)prizeRate:97
獎品為:30 概率:30 隨機數(shù)random:17 概率基數(shù)prizeRate:33
獎品為:20 概率:20 隨機數(shù)random:9 概率基數(shù)prizeRate:23
獎品為:24 概率:40 隨機數(shù)random:17 概率基數(shù)prizeRate:47
獎品為:20 概率:20 隨機數(shù)random:79 概率基數(shù)prizeRate:90
獎品為:30 概率:30 隨機數(shù)random:47 概率基數(shù)prizeRate:50
獎品為:24 概率:40 隨機數(shù)random:96 概率基數(shù)prizeRate:97
獎品為:24 概率:40 隨機數(shù)random:37 概率基數(shù)prizeRate:50
獎品為:30 概率:30 隨機數(shù)random:74 概率基數(shù)prizeRate:97
獎品為:30 概率:30 隨機數(shù)random:57 概率基數(shù)prizeRate:77
獎品為:24 概率:40 隨機數(shù)random:43 概率基數(shù)prizeRate:47
獎品為:30 概率:30 隨機數(shù)random:36 概率基數(shù)prizeRate:60
獎品為:24 概率:40 隨機數(shù)random:42 概率基數(shù)prizeRate:50
獎品為:20 概率:20 隨機數(shù)random:22 概率基數(shù)prizeRate:23
獎品為:24 概率:40 隨機數(shù)random:84 概率基數(shù)prizeRate:100
獎品為:24 概率:40 隨機數(shù)random:24 概率基數(shù)prizeRate:43
獎品為:24 概率:40 隨機數(shù)random:72 概率基數(shù)prizeRate:97
獎品為:30 概率:30 隨機數(shù)random:12 概率基數(shù)prizeRate:40
獎品為:24 概率:40 隨機數(shù)random:17 概率基數(shù)prizeRate:40
獎品為:30 概率:30 隨機數(shù)random:22 概率基數(shù)prizeRate:50
獎品為:20 概率:20 隨機數(shù)random:12 概率基數(shù)prizeRate:20
獎品為:30 概率:30 隨機數(shù)random:60 概率基數(shù)prizeRate:73
獎品為:24 概率:40 隨機數(shù)random:28 概率基數(shù)prizeRate:60
獎品為:24 概率:40 隨機數(shù)random:41 概率基數(shù)prizeRate:73
獎品為:24 概率:40 隨機數(shù)random:36 概率基數(shù)prizeRate:47
獎品為:24 概率:40 隨機數(shù)random:80 概率基數(shù)prizeRate:100
獎品為:30 概率:30 隨機數(shù)random:36 概率基數(shù)prizeRate:37
獎品為:7 概率:7 隨機數(shù)random:46 概率基數(shù)prizeRate:47
獎品為:24 概率:40 隨機數(shù)random:77 概率基數(shù)prizeRate:100
獎品為:24 概率:40 隨機數(shù)random:79 概率基數(shù)prizeRate:100
獎品為:7 概率:7 隨機數(shù)random:34 概率基數(shù)prizeRate:37
獎品為:24 概率:40 隨機數(shù)random:39 概率基數(shù)prizeRate:40
獎品為:30 概率:30 隨機數(shù)random:99 概率基數(shù)prizeRate:100
獎品為:20 概率:20 隨機數(shù)random:43 概率基數(shù)prizeRate:60
獎品為:7 概率:7 隨機數(shù)random:62 概率基數(shù)prizeRate:67
獎品為:24 概率:40 隨機數(shù)random:42 概率基數(shù)prizeRate:73
獎品為:7 概率:7 隨機數(shù)random:3 概率基數(shù)prizeRate:7
獎品為:24 概率:40 隨機數(shù)random:86 概率基數(shù)prizeRate:97
獎品為:24 概率:40 隨機數(shù)random:11 概率基數(shù)prizeRate:43
獎品為:24 概率:40 隨機數(shù)random:58 概率基數(shù)prizeRate:90
獎品為:24 概率:40 隨機數(shù)random:57 概率基數(shù)prizeRate:77
獎品為:30 概率:30 隨機數(shù)random:52 概率基數(shù)prizeRate:70
獎品為:7 概率:7 隨機數(shù)random:60 概率基數(shù)prizeRate:67
獎品為:24 概率:40 隨機數(shù)random:85 概率基數(shù)prizeRate:97
獎品為:20 概率:20 隨機數(shù)random:84 概率基數(shù)prizeRate:97
獎品為:30 概率:30 隨機數(shù)random:84 概率基數(shù)prizeRate:100
獎品為:24 概率:40 隨機數(shù)random:70 概率基數(shù)prizeRate:73
獎品為:24 概率:40 隨機數(shù)random:83 概率基數(shù)prizeRate:100
獎品為:24 概率:40 隨機數(shù)random:85 概率基數(shù)prizeRate:93
獎品為:30 概率:30 隨機數(shù)random:75 概率基數(shù)prizeRate:90
獎品為:20 概率:20 隨機數(shù)random:54 概率基數(shù)prizeRate:70
獎品為:30 概率:30 隨機數(shù)random:51 概率基數(shù)prizeRate:60
獎品為:24 概率:40 隨機數(shù)random:38 概率基數(shù)prizeRate:40
獎品為:30 概率:30 隨機數(shù)random:52 概率基數(shù)prizeRate:57
獎品為:20 概率:20 隨機數(shù)random:12 概率基數(shù)prizeRate:23
獎品為:20 概率:20 隨機數(shù)random:14 概率基數(shù)prizeRate:20
獎品為:24 概率:40 隨機數(shù)random:55 概率基數(shù)prizeRate:90
獎品為:20 概率:20 隨機數(shù)random:45 概率基數(shù)prizeRate:50
獎品為:7 概率:7 隨機數(shù)random:99 概率基數(shù)prizeRate:100
獎品為:24 概率:40 隨機數(shù)random:32 概率基數(shù)prizeRate:40
獎品為:30 概率:30 隨機數(shù)random:25 概率基數(shù)prizeRate:50
獎品為:30 概率:30 隨機數(shù)random:96 概率基數(shù)prizeRate:100
獎品為:20 概率:20 隨機數(shù)random:8 概率基數(shù)prizeRate:20
獎品為:20 概率:20 隨機數(shù)random:17 概率基數(shù)prizeRate:30
獎品為:20 概率:20 隨機數(shù)random:56 概率基數(shù)prizeRate:60
獎品為:24 概率:40 隨機數(shù)random:3 概率基數(shù)prizeRate:40
獎品為:7 概率:7 隨機數(shù)random:20 概率基數(shù)prizeRate:27
獎品為:20 概率:20 隨機數(shù)random:3 概率基數(shù)prizeRate:20
獎品為:24 概率:40 隨機數(shù)random:71 概率基數(shù)prizeRate:100
獎品為:24 概率:40 隨機數(shù)random:44 概率基數(shù)prizeRate:80
獎品為:24 概率:40 隨機數(shù)random:72 概率基數(shù)prizeRate:93
獎品為:24 概率:40 隨機數(shù)random:73 概率基數(shù)prizeRate:97
獎品為:20 概率:20 隨機數(shù)random:47 概率基數(shù)prizeRate:50
獎品為:20 概率:20 隨機數(shù)random:58 概率基數(shù)prizeRate:60
獎品為:24 概率:40 隨機數(shù)random:35 概率基數(shù)prizeRate:70
獎品為:20 概率:20 隨機數(shù)random:12 概率基數(shù)prizeRate:20
獎品為:30 概率:30 隨機數(shù)random:19 概率基數(shù)prizeRate:30
獎品為:3 概率:3 隨機數(shù)random:7 概率基數(shù)prizeRate:10
獎品為:24 概率:40 隨機數(shù)random:33 概率基數(shù)prizeRate:60
獎品為:20 概率:20 隨機數(shù)random:83 概率基數(shù)prizeRate:97
獎品為:30 概率:30 隨機數(shù)random:27 概率基數(shù)prizeRate:30
獎品為:3 概率:3 隨機數(shù)random:99 概率基數(shù)prizeRate:100
獎品為:24 概率:40 隨機數(shù)random:85 概率基數(shù)prizeRate:100
獎品為:20 概率:20 隨機數(shù)random:89 概率基數(shù)prizeRate:97
獎品為:30 概率:30 隨機數(shù)random:15 概率基數(shù)prizeRate:30
獎品為:24 概率:40 隨機數(shù)random:41 概率基數(shù)prizeRate:70
set使用時間:14
PS:這里再為大家提供幾款功能類似的在線工具供大家參考:
在線隨機數(shù)字/字符串生成工具:
http://tools.jb51.net/aideddesign/suijishu
在線隨機字符/隨機密碼生成工具:
http://tools.jb51.net/aideddesign/rnd_password
高強度密碼生成器:
http://tools.jb51.net/password/CreateStrongPassword
更多關于java算法相關內容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結構與算法教程》、《Java字符與字符串操作技巧總結》、《Java操作DOM節(jié)點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設計有所幫助。
相關文章
java8中的List<String>轉List<Integer>的實例代碼
這篇文章主要介紹了java8中的List<String>轉List<Integer>,轉換list列表String到列表Intger,java8提供了stream很好的進行操作,本文通過示例代碼給大家介紹的非常詳細,需要的朋友可以參考下2023-07-07
Eclipse配置tomcat發(fā)布路徑的問題wtpwebapps解決辦法
這篇文章主要介紹了Eclipse配置tomcat發(fā)布路徑的問題wtpwebapps解決辦法的相關資料,需要的朋友可以參考下2017-06-06
Java 使用Socket正確讀取數(shù)據(jù)姿勢
這篇文章主要介紹了Java 使用Socket正確讀取數(shù)據(jù)姿勢,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10
Maven dependencies與dependencyManagement的區(qū)別詳解
這篇文章主要介紹了Maven dependencies與dependencyManagement的區(qū)別詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-04-04

