当前位置: 移动技术网 > IT编程>开发语言>Java > JAVA 根据设置的概率生成随机数的方法

JAVA 根据设置的概率生成随机数的方法

2019年07月19日  | 移动技术网IT编程  | 我要评论

用面包机做面包,特种养殖业,新溧阳论坛

本文介绍了java 根据设置的概率生成随机数的方法,分享给大家

import java.util.arraylist;
import java.util.hashmap;
import java.util.list;
import java.util.map;
import java.util.random;

public class randomtest {

  // string 可以为任意类型 也可以自定义类型
  static map<string, integer> keychancemap = new hashmap<string, integer>();
  static {
    keychancemap.put("aaa", 500);
    keychancemap.put("bbb", 1500);
    keychancemap.put("ccc", 2000);
    keychancemap.put("ddd", 3000);
    keychancemap.put("eee", 3000);
  }

  public static void main(string[] args) {
    map<string, integer> count = new hashmap<string, integer>();
    list<string> list = new arraylist<>();
    string item = null;
    for (int i = 0; i < 10000; i++) {
      item = chanceselect(keychancemap);
      list.add(item);

      if (count.containskey(item)) {
        count.put(item, count.get(item) + 1);
      } else {
        count.put(item, 1);
      }

    }
    for (string id : count.keyset()) {
      system.out.println(id + "\t出现了 " + count.get(id) + " 次");
    }

    random rand = new random();
    int num = rand.nextint(10000);
    system.out.print("最终选择的随机数为:"+list.get(num));
  }

  public static string chanceselect(map<string, integer> keychancemap) {
    if (keychancemap == null || keychancemap.size() == 0)
      return null;

    integer sum = 0;
    for (integer value : keychancemap.values()) {
      sum += value;
    }
    // 从1开始
    integer rand = new random().nextint(sum) + 1;

    for (map.entry<string, integer> entry : keychancemap.entryset()) {
      rand -= entry.getvalue();
      // 选中
      if (rand <= 0) {
        string item = entry.getkey();
        return item;
      }
    }
    return null;
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网