求一个方法:function ifwin(a,b)
参数a:中奖的概率,0-100%,例如30,那么中奖的概率为百分之三十。
参数b:传递的字符串或者十进制数字,来算它的中奖概率

解决方案 »

  1.   


    那就不具有随机性了,传入a,假如a=10;那么中奖概率为百分之十,可以从100个数中随机取十个数,而不是取小于等于10的。
    第二问:b为传入的字符串或者数字,比如200001001021,判断它是否中奖。比如想在中奖概率为百分之10%,那么我随机从1-100取10个数字,正好有等于200001001021尾数21,那么它就中奖。
      

  2.   

    更正题目:
    求一个方法:function ifwin(a,b)
    参数a:中奖的概率,0-100%,例如30,那么中奖的概率为百分之三十。
    参数b:传递的字符串或者十进制数字,来算它是否中奖
      

  3.   


    function ifwin(a,b){
        if(Math.random()*100>>0<=a)alert(b+'中奖了');
        else alert(b+'未中奖');
    }
    ifwin(50,'test1');
    ifwin(0,'test2');
    ifwin(100,'test3');
      

  4.   

    能解释解释这里不?“Math.random()*100>>0<=a
      

  5.   

    我的逻辑:30%的中奖率为从1-100中取出一个数,这个数<=30的几率。
    同理:30.01%的几率为从1-10000中取出一个数,这个数<=3001的几率。下面这个函数估计更合理:function ifwin(a,b){
        //求几率的小数位个数
        var x=Math.max(0,(Number((a+'').replace(/\d+/,'0'))+'').length-2);
        //alert(x);求几率转整的倍率
        x=Math.pow(10,x);
        //放大几率为整数
        a=a*x;
        //取1-N的随机一个整数
        x=(Math.random()*100*x)>>0;
        //alert(x+' '+a)
        if(x<=a)alert(b+'中奖了');
        else alert(b+'未中奖');
    }
    ifwin(50.1,'test1');或许不用那么复杂,直接if(Math.random()<=a)alert(b+'中奖了')