如题我是用这样的方法,但是感觉这样的方法概率不能确定
复制代码
这样能达到百分之80概率的效果吗?个人感觉不行,所以来求dalao解决
- int r = new Random().nextInt(100)+1;
- if(r<80){
- //do some
- }
这样能达到百分之80概率的效果吗?个人感觉不行,所以来求dalao解决
如果random之后要+1的话
就r<=80【1~80】
如果r<80的话,就不要+1【0~79】
就r<=80【1~80】
如果r<80的话,就不要+1【0~79】
本帖最后由 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);
//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分之八的概率?求解
帅比小樊 发表于 2017-5-7 08:00
懂了,谢谢dalao,用这个方法haschance(80)这样就是百分之80概率?返回的是Boolean,这样是100分之八的 ...
80%TRUE 20%FALSE没毛病啊
真不知你怎么想的
姚氏帅哥 发表于 2017-5-7 08:13
80%TRUE 20%FALSE没毛病啊
真不知你怎么想的
一开始是这么想就是还有点疑问才发的,谢谢教诲
其实你可以把
int r = random.nextInt(100)+ 1;
这里的1改为一个变量.默认值为1.强化概率就多加点.
int c=1;
if(强化概率){
c+=50;
}
int r =random.nextInt(100)+c;
if(r>80){
强化成功
}
int r = random.nextInt(100)+ 1;
这里的1改为一个变量.默认值为1.强化概率就多加点.
int c=1;
if(强化概率){
c+=50;
}
int r =random.nextInt(100)+c;
if(r>80){
强化成功
}