尘晓凡
如题我是用这样的方法,但是感觉这样的方法概率不能确定
  1. int r = new Random().nextInt(100)+1;
  2. if(r<80){
  3. //do some
  4. }
复制代码

这样能达到百分之80概率的效果吗?个人感觉不行,所以来求dalao解决

言灵乀Poison
如果random之后要+1的话
就r<=80【1~80】
如果r<80的话,就不要+1【0~79】

a8105
本帖最后由 810587921 于 2017-5-7 01:56 编辑

//0.01-100
public boolean hasChance(double chance)
{
    return !(chance < 0 || chance > 100) && (Math.random() <= (chance / 100));
}
Edit:
hasChance(80.0);

尘晓凡
810587921 发表于 2017-5-7 01:52
//0.01-100
public boolean hasChance(double chance)
{

懂了,谢谢dalao,用这个方法haschance(80)这样就是百分之80概率?返回的是Boolean,这样是100分之八的概率?求解

Yaossg
帅比小樊 发表于 2017-5-7 08:00
懂了,谢谢dalao,用这个方法haschance(80)这样就是百分之80概率?返回的是Boolean,这样是100分之八的 ...

80%TRUE 20%FALSE没毛病啊
真不知你怎么想的

尘晓凡
姚氏帅哥 发表于 2017-5-7 08:13
80%TRUE 20%FALSE没毛病啊
真不知你怎么想的

一开始是这么想就是还有点疑问才发的,谢谢教诲

l609450344
其实你可以把
int r = random.nextInt(100)+ 1;
这里的1改为一个变量.默认值为1.强化概率就多加点.
int c=1;
if(强化概率){
   c+=50;
}
int r =random.nextInt(100)+c;
if(r>80){
强化成功
}

第一页 上一页 下一页 最后一页