java权重_Java带权重的随机数详解

该博客探讨了如何在Java中实现带权重的随机数生成。通过创建一个1-100的随机数,根据数值范围映射到不同概率的字符A、B、C。此外,还提供了一个方法来处理不确定数量且具有权重的选项,从列表中按权重选择元素。该示例适用于面试中的概率问题和随机数应用场景。
摘要由CSDN通过智能技术生成

[Java]代码

package test;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import java.util.Random;

//带权重的随机数

//面试的时候面试官问道一个这样的问题

//A、B、C三个字符分别出现的概率是30%,40%,30%

//分析:首先1-100随机产生一个数,判断这个数,1-30出现的概率是30%, 31—70出现的概率是40%, 71-100出现的概率是30%

public class WeightRandom {

public static void main(String[] args) {

Random ran = new Random();

String str=getWanfei(ran.nextInt(100));

Map map = new HashMap();

map.put("key","A");

map.put("value","30");

Map map1 = new HashMap();

map.put("key","B");

map.put("value","70");

List> list = new ArrayList>();

list.add(map);

list.add(map1);

System.out.println( getWeight(list,ran.nextInt(100)));

}

//知道权重的情况下

public static String getWanfei(int num){

if(num>=1 && num<=30){

return "A";

}else if(num>=31 && num<70){

return "B";

}else{

return "C";

}

}

//如果A、B、C的个数不确定 ,权重的总数也也不确定

public static String getWeight(List> list,int ran){

//map里放的是a,b,c 值,和每个a、b、c对应的权重

int sum=0;

int total = list.size();

for(int i=0;i

sum+=Integer.parseInt(list.get(i).get("value").toString());

if(ran<=sum){

return list.get(i).get("key").toString();

}

}

return null;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值