现急需一个抽样函数的写法:
  给出几率p,求函数F(p)表达式。其中函数F的值为一个布尔型,要求:在函数F的n次求值中,函数F的值为1的次数(假设为t次)和n的关系满足t/n=p。简单的一句话:假设要求你在100个零件中随机抽检p个,每次你拿起一个零件的时候,用这个算法计算得出是否需要检查,是则检查,否则放一边。最后,你检查的次数必须是p次!!
  我当时的算法是if  Random(0,99) in [0..p-1] then 
                  Result := true
               else
                  Result := false;
可是每次这样的是从同一个数字(也就是0)开始 Random的,为了每次Random起点不同,于是我就用上了Randomize,但是这样以来我的算法就是全部的Result 都等于Ture!!我不明白了。。

解决方案 »

  1.   

    呵呵,Randomize函数很有趣,不用吧,Random函数产生的随机数太不随机,用吧,用不好会出问题,只有用得恰到好处才会一切顺畅。
    为了每次Random起点不同而每次之前都调用Randomize是错误的想法。Randomize产生一个种子,随后的多次Random序列都受它影响。
    因此,在所有的Random调用之前,只调用一次Randomize即可。建议就在应用程序开始执行时调用一次就行了,应用程序运行中就不要再调用了。