需求
     从1----100一共一百个整数,随机取出一个数,
     要求是,取出1的概率是90%,2的概率是80%。其他没限制。
请问各位,这应该怎么做呢

解决方案 »

  1.   

    给你一个比较简单的算法,需要取两次随即数第一次取1-100之间的一个随机数,如果是1-90之间直接最后结果就是1,如果是91-100之间,再次取2-100之间的随机数,取得的随机数就是最后的结果。
    代码如下:
    public int getNumber(){
    int result = 0;
    int temp = 0;
    Random random = new Random();
    temp = random.nextInt(100);
    if(temp<90){
    result = 1;
    }else{
    result = random.nextInt(99)+1;
    }
    return result;
    }
      

  2.   

    错了,好像应该是 public int getNumber(){
    int result = 0;
    int temp = 0;
    Random random = new Random();
    temp = random.nextInt(100);
    if(temp<90){
    result = 1;
    }else{
    result = random.nextInt(99)+1;
    }
    return result;
    }
      

  3.   

    晕,又发错了,管理员要认为我是刷屏了。
    public int getNumber(){
    int result = 0;
    int temp = 0;
    Random random = new Random();
    temp = random.nextInt(100);
    if(temp<90){
    result = 1;
    }else{
    result = random.nextInt(99)+2;    //应该是+2
    }
    return result;
    }
      

  4.   

    请问
    random.nextInt(99)+2;这里怎么是+2呢?
    random.nextInt这个返回是多少?思想挺好的  呵呵  跟steedhorse 一样的
      

  5.   

    因为random.nextInt(99)返回的是从0-98之间的一个随机数,而需要的是一个从2-100之间的随机数,所以要加2啊。
      

  6.   

    题目:
    从1----100一共一百个整数,随机取出一个数。
    要求是,取出1的概率是90%,其他没限制。 
    代码(java):
    import java.until.random //导入包
    public int num(){ //方法num
    int a,b; //声明变量
    a=(int)(Math.random()*10);//把0——9的随机数赋给a
    if(a==0){//判断a,如果a是0(a有10%的可能是0)
    b=2(int)(Math.random()*99//如果a 是0就不2--100的随机数赋给b
    }else{
    b=1;// 否则,把1赋给b
    }
    return b;//返回随机数b
    }
    就这样了,希望对你有用,是你想要的结果。