欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-06-30 09:57:11
本文实例讲述了java实现的根据概率随机中奖测试类。分享给大家供大家参考,具体如下: 最近要做一个宝箱抽奖的功能 自己先联系了一下,分别用 list和set 进行存储和抽...

本文实例讲述了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/password/createstrongpassword