Java:怎样产生1~6的随机数,并使1~4产生的概率大一些呢?

int n = (int)(Math.random()*6+1); 可以产生1~6的随机数,但怎样能使1~4的产生概率大一些呢

用概率模型,先随机一次看取用哪个概率,随后再随机一次。代码示例如下:

import java.util.Random;
public class HelloWorld {
 public static void main(String[] args) 
 {
  Random random = new Random();
  double p1=0.7; //1~4的概率
  double p=(((int)random.nextInt(10)%(10)+1)*1.0/10 < p1)?p1:(1-p1); //实际所取概率
  int max=(p==p1)?4:6;
  int num=(int)random.nextInt(max)%(max)+1;
  System.out.print(num);
 }
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-27

给提供一个小思路吧,当然你也可以搜索 "随机数 权重"来查看更多资料。

public int getRadomInt(){
    int m = (int)(Math.random()*10+1);
    if(m<7){
        return (int)(Math.random()*4+1);
    } else {
        return (int)(Math.random()*4+1+2);
    }
}

好久没写Java代码了,不知道对不对。


大体意思就是,先随机 1到10,假定为 概率相同,那么 当出现的数小于等于6,就随机出1到4,那么随机到 1到4 的概率就是 60%。

这样应该能明白了吧。

第2个回答  2014-12-27
那就不叫随机了啊。但是你可以加个if判断如果在1~4的话,输出,不再的话在做一次随机。第二次不管结果是什么都直接输出。本回答被网友采纳
相似回答