「java转盘概率」转盘几率怎么算

博主:adminadmin 2022-12-19 02:33:08 56

今天给各位分享java转盘概率的知识,其中也会对转盘几率怎么算进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

求java算法:根据物品的数量来确定抽奖的概率(当物品数量为0时无论如何都不可能选到)

public class Lottery {

private int m = 1000;//发放奖券的数量

private int n = 2;//奖品的数量

public boolean getLottery(){

boolean isLottery = false;

double d = (double)n/(double)m;//中奖概率

double r = Math.random();//0~1之间的随机数,包括0

if(rd){//如果随机数小于概率 那么中奖

n--;//奖品数量-1

isLottery = true;

}

m--;//奖券数量-1

return isLottery;

}

}

概率计算(转盘)

首先考虑三个数都是正数,那么小于7的可能

只有111 112 122 222

得到娃娃的概率为 (1/2)^3(1-(2/7)^3)=335/2744

再考虑只有1个负数

此负数为-1,那么正数相加至少为8,

得到的概率是3(1+2+3+4+5+6+7)/(14)^3=3/98

此负数为-2,那么正数相加至少为9,

得到的概率是3(1+2+3+4+5+6)/(14)^3=63/2744

此负数为-3,那么正数相加至少为10,

得到的概率是3(1+2+3+4+5)/(14)^3=45/2744

此负数为-4,那么正数相加至少为11,

得到的概率是3(1+2+3+4)/(14)^3=30/2744

此负数为-5,那么正数相加至少为12,

得到的概率是3(1+2+3)/(14)^3=18/2744

此负数为-6,那么正数相加至少为13,

得到的概率是3(1+2)/(14)^3=9/2744

此负数为-7,那么正数相加至少为14,

得到的概率是3(1)/(14)^3=3/2744

如果有2个或3个负数则不可能相加大于等于7

那么获得一个娃娃的概率为上面相加为

587/2744

2元可获得587/2744的机得到娃娃

至少要消费多少钱的话感觉就2元,一次得到啊,呵呵

如果说要消耗的钱的期望值是2*2744/587≈9.35元

哦,原来是这样,刚才我没理解题意思,不过我现在有事,要离开了,如果明天中午之前还没人帮你解答出来的话,我帮你解答把,实在不好意思

现在首先考虑第一个数字是7,几率是1/14

那么现在第一个数字不可能是7

再考虑三个或2个数字是负数,那么也不可能了

再考虑一个数是负数,负数在第一位和第二位,那么几率就是上面的一个负数的几率减去第一是7和前2位加是7是

几率168/2744-4/2744=164/2744

现在考虑前2为相加大于7的情况

(2+3+4+5+6+7)/14^2=378/2744

再考虑加上第3为才大于7的情况

[(5)*7+4*6+3*5+2*4+1*3]/2744=85/2744

总共几率是823/2744

所以获得娃娃的几率是823/2744

期望消耗的钱是2*2744/823=6.67元

Java中请问转盘的概率整么控制?角度这些(谢谢!)

打个比方,现在你的转盘有10种情况,分别为1-10,那么你先new一个list,长度为100,若希望1,概率为25%,则往这个list存储25个1进去,其他的类似,之后你再取list里面的值时,先用Collections.shuff这样一个方法去随机打乱list,再不放心,用Random类获取一个随机数,根据这个随机数去getlist里面的内容;

至于角度,布吉岛了

JAVA抽奖的算法

优先级规则使高等奖尽量在后期抽出

import java.util.LinkedList;

import java.util.List;

public class GetGift {

// 奖品仓库

private ListGift gifts = new LinkedListGift();

public GetGift() {

// 生成一堆奖品放进奖品仓库

// 一等奖一个优先级1,二等奖两个优先级2。。。20等奖20个优先级20

for (int i = 1; i = 20; i++) {

GiftType gt = new GiftType(i + "等奖", i, i);

for (int j = 1; j = i; j++) {

gifts.add(new Gift(i + "等奖——第" + j + "号", gt));

}

}

}

// 抽奖

public synchronized Gift getGift() {

int randomNumber = (int) (Math.random() * total());

int priority = 0;

for (Gift g : gifts) {

priority += g.getType().getPriority();

if (priority = randomNumber) {

// 从奖品库移出奖品

gifts.remove(g);

return g;

}

}

// 抽奖次数多于奖品时,没有奖品

return null;

}

/**

 * @param args

 */

public static void main(String[] args) {

GetGift gg = new GetGift();

// 一共生成210个奖品,抽210次,多抽显示null

for (int i = 0; i  210; i++) {

System.out.println(gg.getGift());

}

}

// 计算总优先级,内部使用

private int total() {

int result = 0;

for (Gift g : gifts) {

result += g.getType().getPriority();

}

return result;

}

}

// 记录奖品的信息

// 如1等奖共1个,优先级为1最难抽

class GiftType {

// 名字(如1等奖)

private String name;

// 这种奖品的数量,数量越大越容易抽到

private int quantity;

// 这种奖品的优先级,最小为1,数越大越容易抽到

private int priority;

public GiftType(String name, int quantity, int priority) {

this.name = name;

this.quantity = quantity;

this.priority = priority;

}

public int getPriority() {

return priority;

}

@Override

public String toString() {

return "GiftType [name=" + name + ", quantity=" + quantity + ", priority=" + priority + "]";

}

}

// 奖品

class Gift {

// 每个奖品有唯一id,抽奖不会重复,格式为"16等奖——第8号"

private String id;

// 这个奖品的类别

private GiftType type;

public Gift(String id, GiftType type) {

this.id = id;

this.type = type;

}

public GiftType getType() {

return type;

}

@Override

public String toString() {

return "Gift [id=" + id + ", type=" + type + "]";

}

}

java转盘概率的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于转盘几率怎么算、java转盘概率的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-19,除非注明,否则均为首码项目网原创文章,转载请注明出处。