程序执行到分支处,计算函数function(odd:double):boolean,返回值为true则执行A分支,否则执行B分支。若希望对任意指定的odd,在程序循环中多次执行后,能够以接近odd的概率执行A分支,1-odd的概率执行B分支。

解决方案 »

  1.   

    for i := 0 to ... do
      begin
        randomize; 
        if  random(2)=1 then  A
        else B;
      end;
      

  2.   

    function ram(odd:double):boolean;
    var
      r:double;
    begin
      randomize;
      r:=random;
      result:=r<odd;
    end;
      

  3.   

    function ram(odd:double):boolean;
    var
      r:double;
    begin
      randomize;
      r:=random(1);
      result:=r<odd;
    end;
      

  4.   

    random返回的是整数,用以上两位的代码应该不行.我自己原来的代码如下.觉得不好.Delphi应该有输出0~1之间的随即小数的函数吧.
    function TForm1.GenerateOdd(const odd:double):boolean;
    begin
      Randomize;
      Result:=Random(10000)<10000*odd;
    end;
      

  5.   

    老大,你看看清楚,r:=ramdon;不带参数返回的是0-1之间的浮点数,帮助里有-_-。
      

  6.   

    TO d983074(d983074) :
    是我粗心了,我没注意到参数是可选的