java实现的根据概率随机中奖测试类

本文实例讲述了java实现的根据概率随机中奖测试类。分享给大家供大家参考,具体如下:

最近要做一个宝箱抽奖的功能 自己先联系了一下,分别用 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;

/** 根据概率获取奖品的测试类 */

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() + " 随机数random:" + random

+ " 概率基数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() + " 随机数random:" + random

+ " 概率基数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 随机数random:17 概率基数prizeRate:20

奖品为:30  概率:30 随机数random:54 概率基数prizeRate:57

奖品为:3  概率:3 随机数random:99 概率基数prizeRate:100

奖品为:24  概率:40 随机数random:87 概率基数prizeRate:97

奖品为:24  概率:40 随机数random:75 概率基数prizeRate:97

奖品为:7  概率:7 随机数random:21 概率基数prizeRate:27

奖品为:20  概率:20 随机数random:9 概率基数prizeRate:20

奖品为:24  概率:40 随机数random:77 概率基数prizeRate:97

奖品为:20  概率:20 随机数random:10 概率基数prizeRate:20

奖品为:24  概率:40 随机数random:83 概率基数prizeRate:97

奖品为:30  概率:30 随机数random:40 概率基数prizeRate:57

奖品为:24  概率:40 随机数random:78 概率基数prizeRate:97

奖品为:24  概率:40 随机数random:58 概率基数prizeRate:97

奖品为:30  概率:30 随机数random:44 概率基数prizeRate:57

奖品为:7  概率:7 随机数random:26 概率基数prizeRate:27

奖品为:30  概率:30 随机数random:56 概率基数prizeRate:57

奖品为:24  概率:40 随机数random:80 概率基数prizeRate:97

奖品为:30  概率:30 随机数random:50 概率基数prizeRate:57

奖品为:30  概率:30 随机数random:34 概率基数prizeRate:57

奖品为:30  概率:30 随机数random:27 概率基数prizeRate:57

奖品为:20  概率:20 随机数random:4 概率基数prizeRate:20

奖品为:24  概率:40 随机数random:87 概率基数prizeRate:97

奖品为:20  概率:20 随机数random:0 概率基数prizeRate:20

奖品为:24  概率:40 随机数random:96 概率基数prizeRate:97

奖品为:7  概率:7 随机数random:20 概率基数prizeRate:27

奖品为:30  概率:30 随机数random:44 概率基数prizeRate:57

奖品为:30  概率:30 随机数random:50 概率基数prizeRate:57

奖品为:7  概率:7 随机数random:23 概率基数prizeRate:27

奖品为:24  概率:40 随机数random:87 概率基数prizeRate:97

奖品为:24  概率:40 随机数random:93 概率基数prizeRate:97

奖品为:30  概率:30 随机数random:35 概率基数prizeRate:57

奖品为:24  概率:40 随机数random:79 概率基数prizeRate:97

奖品为:30  概率:30 随机数random:41 概率基数prizeRate:57

奖品为:30  概率:30 随机数random:42 概率基数prizeRate:57

奖品为:24  概率:40 随机数random:66 概率基数prizeRate:97

奖品为:30  概率:30 随机数random:50 概率基数prizeRate:57

奖品为:30  概率:30 随机数random:43 概率基数prizeRate:57

奖品为:24  概率:40 随机数random:88 概率基数prizeRate:97

奖品为:30  概率:30 随机数random:41 概率基数prizeRate:57

奖品为:24  概率:40 随机数random:74 概率基数prizeRate:97

奖品为:24  概率:40 随机数random:96 概率基数prizeRate:97

奖品为:24  概率:40 随机数random:90 概率基数prizeRate:97

奖品为:24  概率:40 随机数random:96 概率基数prizeRate:97

奖品为:20  概率:20 随机数random:2 概率基数prizeRate:20

奖品为:24  概率:40 随机数random:68 概率基数prizeRate:97

奖品为:7  概率:7 随机数random:25 概率基数prizeRate:27

奖品为:20  概率:20 随机数random:13 概率基数prizeRate:20

奖品为:30  概率:30 随机数random:52 概率基数prizeRate:57

奖品为:30  概率:30 随机数random:32 概率基数prizeRate:57

奖品为:30  概率:30 随机数random:54 概率基数prizeRate:57

奖品为:24  概率:40 随机数random:71 概率基数prizeRate:97

奖品为:24  概率:40 随机数random:90 概率基数prizeRate:97

奖品为:3  概率:3 随机数random:97 概率基数prizeRate:100

奖品为:30  概率:30 随机数random:52 概率基数prizeRate:57

奖品为:24  概率:40 随机数random:65 概率基数prizeRate:97

奖品为:24  概率:40 随机数random:87 概率基数prizeRate:97

奖品为:30  概率:30 随机数random:35 概率基数prizeRate:57

奖品为:30  概率:30 随机数random:37 概率基数prizeRate:57

奖品为:30  概率:30 随机数random:55 概率基数prizeRate:57

奖品为:24  概率:40 随机数random:77 概率基数prizeRate:97

奖品为:24  概率:40 随机数random:78 概率基数prizeRate:97

奖品为:30  概率:30 随机数random:53 概率基数prizeRate:57

奖品为:20  概率:20 随机数random:4 概率基数prizeRate:20

奖品为:24  概率:40 随机数random:80 概率基数prizeRate:97

奖品为:20  概率:20 随机数random:10 概率基数prizeRate:20

奖品为:24  概率:40 随机数random:69 概率基数prizeRate:97

奖品为:30  概率:30 随机数random:34 概率基数prizeRate:57

奖品为:24  概率:40 随机数random:80 概率基数prizeRate:97

奖品为:24  概率:40 随机数random:68 概率基数prizeRate:97

奖品为:30  概率:30 随机数random:28 概率基数prizeRate:57

奖品为:24  概率:40 随机数random:96 概率基数prizeRate:97

奖品为:24  概率:40 随机数random:66 概率基数prizeRate:97

奖品为:20  概率:20 随机数random:0 概率基数prizeRate:20

奖品为:24  概率:40 随机数random:66 概率基数prizeRate:97

奖品为:24  概率:40 随机数random:95 概率基数prizeRate:97

奖品为:24  概率:40 随机数random:77 概率基数prizeRate:97

奖品为:20  概率:20 随机数random:10 概率基数prizeRate:20

奖品为:7  概率:7 随机数random:24 概率基数prizeRate:27

奖品为:30  概率:30 随机数random:31 概率基数prizeRate:57

奖品为:24  概率:40 随机数random:80 概率基数prizeRate:97

奖品为:24  概率:40 随机数random:68 概率基数prizeRate:97

奖品为:30  概率:30 随机数random:54 概率基数prizeRate:57

奖品为:30  概率:30 随机数random:47 概率基数prizeRate:57

奖品为:24  概率:40 随机数random:66 概率基数prizeRate:97

奖品为:24  概率:40 随机数random:78 概率基数prizeRate:97

奖品为:30  概率:30 随机数random:39 概率基数prizeRate:57

奖品为:30  概率:30 随机数random:55 概率基数prizeRate:57

奖品为:30  概率:30 随机数random:50 概率基数prizeRate:57

奖品为:30  概率:30 随机数random:54 概率基数prizeRate:57

奖品为:30  概率:30 随机数random:33 概率基数prizeRate:57

奖品为:30  概率:30 随机数random:55 概率基数prizeRate:57

奖品为:24  概率:40 随机数random:80 概率基数prizeRate:97

奖品为:24  概率:40 随机数random:72 概率基数prizeRate:97

奖品为:3  概率:3 随机数random:98 概率基数prizeRate:100

奖品为:24  概率:40 随机数random:67 概率基数prizeRate:97

奖品为:24  概率:40 随机数random:82 概率基数prizeRate:97

奖品为:7  概率:7 随机数random:22 概率基数prizeRate:27

奖品为:24  概率:40 随机数random:66 概率基数prizeRate:97

奖品为:20  概率:20 随机数random:7 概率基数prizeRate:20

奖品为:30  概率:30 随机数random:43 概率基数prizeRate:57

list使用时间:20

奖品为:7  概率:7 随机数random:2 概率基数prizeRate:7

奖品为:24  概率:40 随机数random:49 概率基数prizeRate:60

奖品为:24  概率:40 随机数random:58 概率基数prizeRate:67

奖品为:20  概率:20 随机数random:51 概率基数prizeRate:60

奖品为:24  概率:40 随机数random:68 概率基数prizeRate:80

奖品为:24  概率:40 随机数random:30 概率基数prizeRate:50

奖品为:24  概率:40 随机数random:25 概率基数prizeRate:60

奖品为:20  概率:20 随机数random:41 概率基数prizeRate:60

奖品为:24  概率:40 随机数random:63 概率基数prizeRate:100

奖品为:30  概率:30 随机数random:15 概率基数prizeRate:37

奖品为:30  概率:30 随机数random:28 概率基数prizeRate:30

奖品为:24  概率:40 随机数random:80 概率基数prizeRate:97

奖品为:20  概率:20 随机数random:84 概率基数prizeRate:97

奖品为:3  概率:3 随机数random:0 概率基数prizeRate:3

奖品为:24  概率:40 随机数random:62 概率基数prizeRate:97

奖品为:30  概率:30 随机数random:17 概率基数prizeRate:33

奖品为:20  概率:20 随机数random:9 概率基数prizeRate:23

奖品为:24  概率:40 随机数random:17 概率基数prizeRate:47

奖品为:20  概率:20 随机数random:79 概率基数prizeRate:90

奖品为:30  概率:30 随机数random:47 概率基数prizeRate:50

奖品为:24  概率:40 随机数random:96 概率基数prizeRate:97

奖品为:24  概率:40 随机数random:37 概率基数prizeRate:50

奖品为:30  概率:30 随机数random:74 概率基数prizeRate:97

奖品为:30  概率:30 随机数random:57 概率基数prizeRate:77

奖品为:24  概率:40 随机数random:43 概率基数prizeRate:47

奖品为:30  概率:30 随机数random:36 概率基数prizeRate:60

奖品为:24  概率:40 随机数random:42 概率基数prizeRate:50

奖品为:20  概率:20 随机数random:22 概率基数prizeRate:23

奖品为:24  概率:40 随机数random:84 概率基数prizeRate:100

奖品为:24  概率:40 随机数random:24 概率基数prizeRate:43

奖品为:24  概率:40 随机数random:72 概率基数prizeRate:97

奖品为:30  概率:30 随机数random:12 概率基数prizeRate:40

奖品为:24  概率:40 随机数random:17 概率基数prizeRate:40

奖品为:30  概率:30 随机数random:22 概率基数prizeRate:50

奖品为:20  概率:20 随机数random:12 概率基数prizeRate:20

奖品为:30  概率:30 随机数random:60 概率基数prizeRate:73

奖品为:24  概率:40 随机数random:28 概率基数prizeRate:60

奖品为:24  概率:40 随机数random:41 概率基数prizeRate:73

奖品为:24  概率:40 随机数random:36 概率基数prizeRate:47

奖品为:24  概率:40 随机数random:80 概率基数prizeRate:100

奖品为:30  概率:30 随机数random:36 概率基数prizeRate:37

奖品为:7  概率:7 随机数random:46 概率基数prizeRate:47

奖品为:24  概率:40 随机数random:77 概率基数prizeRate:100

奖品为:24  概率:40 随机数random:79 概率基数prizeRate:100

奖品为:7  概率:7 随机数random:34 概率基数prizeRate:37

奖品为:24  概率:40 随机数random:39 概率基数prizeRate:40

奖品为:30  概率:30 随机数random:99 概率基数prizeRate:100

奖品为:20  概率:20 随机数random:43 概率基数prizeRate:60

奖品为:7  概率:7 随机数random:62 概率基数prizeRate:67

奖品为:24  概率:40 随机数random:42 概率基数prizeRate:73

奖品为:7  概率:7 随机数random:3 概率基数prizeRate:7

奖品为:24  概率:40 随机数random:86 概率基数prizeRate:97

奖品为:24  概率:40 随机数random:11 概率基数prizeRate:43

奖品为:24  概率:40 随机数random:58 概率基数prizeRate:90

奖品为:24  概率:40 随机数random:57 概率基数prizeRate:77

奖品为:30  概率:30 随机数random:52 概率基数prizeRate:70

奖品为:7  概率:7 随机数random:60 概率基数prizeRate:67

奖品为:24  概率:40 随机数random:85 概率基数prizeRate:97

奖品为:20  概率:20 随机数random:84 概率基数prizeRate:97

奖品为:30  概率:30 随机数random:84 概率基数prizeRate:100

奖品为:24  概率:40 随机数random:70 概率基数prizeRate:73

奖品为:24  概率:40 随机数random:83 概率基数prizeRate:100

奖品为:24  概率:40 随机数random:85 概率基数prizeRate:93

奖品为:30  概率:30 随机数random:75 概率基数prizeRate:90

奖品为:20  概率:20 随机数random:54 概率基数prizeRate:70

奖品为:30  概率:30 随机数random:51 概率基数prizeRate:60

奖品为:24  概率:40 随机数random:38 概率基数prizeRate:40

奖品为:30  概率:30 随机数random:52 概率基数prizeRate:57

奖品为:20  概率:20 随机数random:12 概率基数prizeRate:23

奖品为:20  概率:20 随机数random:14 概率基数prizeRate:20

奖品为:24  概率:40 随机数random:55 概率基数prizeRate:90

奖品为:20  概率:20 随机数random:45 概率基数prizeRate:50

奖品为:7  概率:7 随机数random:99 概率基数prizeRate:100

奖品为:24  概率:40 随机数random:32 概率基数prizeRate:40

奖品为:30  概率:30 随机数random:25 概率基数prizeRate:50

奖品为:30  概率:30 随机数random:96 概率基数prizeRate:100

奖品为:20  概率:20 随机数random:8 概率基数prizeRate:20

奖品为:20  概率:20 随机数random:17 概率基数prizeRate:30

奖品为:20  概率:20 随机数random:56 概率基数prizeRate:60

奖品为:24  概率:40 随机数random:3 概率基数prizeRate:40

奖品为:7  概率:7 随机数random:20 概率基数prizeRate:27

奖品为:20  概率:20 随机数random:3 概率基数prizeRate:20

奖品为:24  概率:40 随机数random:71 概率基数prizeRate:100

奖品为:24  概率:40 随机数random:44 概率基数prizeRate:80

奖品为:24  概率:40 随机数random:72 概率基数prizeRate:93

奖品为:24  概率:40 随机数random:73 概率基数prizeRate:97

奖品为:20  概率:20 随机数random:47 概率基数prizeRate:50

奖品为:20  概率:20 随机数random:58 概率基数prizeRate:60

奖品为:24  概率:40 随机数random:35 概率基数prizeRate:70

奖品为:20  概率:20 随机数random:12 概率基数prizeRate:20

奖品为:30  概率:30 随机数random:19 概率基数prizeRate:30

奖品为:3  概率:3 随机数random:7 概率基数prizeRate:10

奖品为:24  概率:40 随机数random:33 概率基数prizeRate:60

奖品为:20  概率:20 随机数random:83 概率基数prizeRate:97

奖品为:30  概率:30 随机数random:27 概率基数prizeRate:30

奖品为:3  概率:3 随机数random:99 概率基数prizeRate:100

奖品为:24  概率:40 随机数random:85 概率基数prizeRate:100

奖品为:20  概率:20 随机数random:89 概率基数prizeRate:97

奖品为:30  概率:30 随机数random:15 概率基数prizeRate:30

奖品为:24  概率:40 随机数random:41 概率基数prizeRate:70

set使用时间:14

PS:这里再为大家提供几款功能类似的在线工具供大家参考:

在线随机数字/字符串生成工具:

http://tools.jb51.net/aideddesign/suijishu

在线随机字符/随机密码生成工具:

http://tools.jb51.net/aideddesign/rnd_password

高强度密码生成器:

http://tools.jb51.net/password/CreateStrongPassword

更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java字符与字符串操作技巧总结》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。

以上是 java实现的根据概率随机中奖测试类 的全部内容, 来源链接: utcz.com/z/357199.html

回到顶部