这行代码是什么意思?

我想知道这行代码是什么意思?

b = (gen_rand_uniform()>0.5)?1:0; 

gren_rand_uniform()是生成随机0和1数字的函数。 但是我没有得到>0.51:0的含义。

我知道这应该是一个基本问题,请耐心等待。

谢谢!

这是速记。 在您给出的示例中,它相当于:

 if (gen_rand_uniform() > 0.5) { b = 1; } else { b = 0; } 

由于gen_rand_uniform()可能生成10之间均匀分布的随机数,因此该值高于0.5的可能性为50%。 这意味着获得10几率为50%

我不认为get_rand_uniform()会做你认为它做的事情。 它可能看起来像这样:

 float get_rand_uniform(void); 

或者也许double 。 关键是,它返回0到1 之间的随机十进制数。所以这个:

 get_rand_uniform() > 0.5 

是检查该数字是否接近1或0.并且:

 x ? y : z 

是三元条件运算符,它具有与此相同的function:

 if(x) { y } else { z } 

除了三元运算符是一个表达式 。 所有这一切:

 get_rand_uniform() > 0.5 ? 1 : 0 

基本上是将随机浮点数舍入为1或0,这个:

 b = get_rand_uniform() > 0.5 ? 1 : 0; 

指定随机选择1或0到b 。 我相信这里的括号是不必要的,但如果你喜欢它们,那就去吧。

这是一种获得随机值的方法,该值为1或0,每50%的时间。 “?” 和“:”是条件操作员 。

这是四舍五入。 b变量将为0或1。

它编码了硬币的翻转。 (一个完美平衡的硬币。)

条件转让 :

 variable = condition ? value_if_true : value_if_false; 

这相当于:

 if (condition) { variable = value_if_true; } else { variable = value_if_false; } 

你给我们的代码只是随机的bool。 它将返回1或0。

你在这里看到的是一个ternary expressionhttp://en.wikipedia.org/wiki/Ternary_operation这是(正如其他人已经指出的那样)一个条件构造,但是一个特定于表达式的构造,意味着返回一个值。

这种结构存在于大多数语言中(但不存在于例如VB.Net中)并且具有以下forms

 condition ? valueiftrue: valueiffalse 

这个实例的一个例子是:

 var foo = true; var bar = foo ? 'foo is true' : 'foo is false'; // bar = 'foo is true' 

另请注意,条件可以是任何表达式(例如,在您的情况下gen_rand_uniform() > 0.5 )并且gen_rand_uniform() > 0.5可以包含嵌套的三元表达式,它所要做的就是将其计算为非假值。