Java改变生成随机数的平均值(改变生成随机数的概率)
来源:互联网 发布:ssd主控测试软件 编辑:程序博客网 时间:2024/06/06 04:06
Java改变生成随机数的平均值(改变生成随机数的概率)
最近做普通商户微信发红包的接口,需求是可以发1-100元的红包,要求总红包金额的平均值为2
按照Java的random函数生成红包金额:1+ (new Random().nextFloat() * (100- 1)),均值自然在50元左右
怎么办?
恩......有了!
将红包金额分为两个区间 [1,2] , [2,100],让金额在 [1,2] 区间内出现的次数高,在 [2,100] 区间出现的次数低,这样便能拉低平均值
设在 [1,2] 区间的概率为x,那么 [2,100] 区间的概率为1-x,(小区间均值*概率)+(大区间均值*概率)=总均值
由此可得1.5 * x + 51 * (1-x) = 2,解出来 x = 0.9898......,大概是0.99啦
代码如下:
public void testRandom(){ Random random = new Random(); float rad = 0; float money = 0; float total = 0; int i = 1000; while(i>0) { rad = random.nextFloat(); if (rad < 0.99) { money = 1 + (random.nextFloat() * (2 - 1)); } else { money = 2 + (random.nextFloat() * (100 - 2)); System.out.println("大于2:"+money); } total = total + money; i--; } System.out.println("平均值:"+(total/1000)); }
测试执行1000次,生成了十个大于2的随机数,平均值为2.0012546:
大于2:4.544708
大于2:50.684223
大于2:47.64222
大于2:90.15074
大于2:72.53537
大于2:78.492485
大于2:72.61912
大于2:28.400482
大于2:66.73454
大于2:7.787241
平均值:2.0012546
大于2:50.684223
大于2:47.64222
大于2:90.15074
大于2:72.53537
大于2:78.492485
大于2:72.61912
大于2:28.400482
大于2:66.73454
大于2:7.787241
平均值:2.0012546
O(∩_∩)O哈哈~,搞定
阅读全文
0 0
- Java改变生成随机数的平均值(改变生成随机数的概率)
- JAVA 根据设置的概率生成随机数
- JAVA 根据概率生成的随机数
- JAVA 根据设置的概率生成随机数
- 概率条件下随机数的生成
- 改变随机数中一些值的概率
- java随机数的生成
- java 随机数的生成
- Java随机数的生成
- java 生成随机数的
- 根据平均值(期望)生成min与max范围内的等概率随机数
- 控制随机数生成概率的一种解决方法
- 控制随机数生成概率的一种解决方法
- 【matlab】以一定的概率生成随机数
- 控制随机数生成概率的一种解决方法
- 概率、随机数、随机数生成函数
- 自定义view圆形之生成随机数改变
- java生成随机数的代码
- c++对文件进行操作之读取文件夹下面的图片名称
- 自旋锁原理及java自旋锁
- 顺时针打印矩阵(数组)
- Spring Bean的装配
- meshlab编译过程(2)-编译meshlab_full.pro
- Java改变生成随机数的平均值(改变生成随机数的概率)
- settings
- 使用Apriori算法进行关联分析
- android6.0 检查权限(兼容小米)
- Retrofit2
- 实验七:将menu设计为可重用的子系统
- tomcat设置账号密码
- text-shadow和box-shadow用法
- C# DataGridView绑定数据源的几种常见方式