一个函数,有一定概率返回true
函数f(int x),有x%概率返回true,这两种方法哪个更好?
- C/C++ code
//1bool f(int x){ return rand() % 100 < x;}//2bool f(int x){ return (float)rand() / (float) RAND_MAX < (float)x / (float)100;}[解决办法]
出于何种目的呢?
如何为“好”?
[解决办法]
我选1, 简单清晰易读
[解决办法]
前者是错的。
而且每次还要筛选下新种子.srand.否则连续调用多次后,会得到相同序列顺序的随机值。
[解决办法]
[解决办法]
可以使用系统环境变量%random%
[解决办法]
要不然就用VB
- VB code
Public Function f(x As Integer)As BooleanDim iRand As IntegeriRand = Int(Rnd * 100)f = iRand < xEnd Function'Sub Main里面写Randomize即可,然后调用函数
[解决办法]
貌似都不好.有永远返回true的情况,或者永远返回false的情况
[解决办法]
//1
bool f(int x)
{
return rand() % 100 < x;
}
如果x>=100那永远都是true,如果x==0永远都是false
第二个同理
你没有说明x的定义域,不知道有没有这一要求
[解决办法]
第二种方法虽然难理解,但是准确程度高一些
第一中在x小于35时,概率稍微打一下,因为随机数在0~65535之间
[解决办法]
第一种,简单,直接,效率高