3 c
我想知道这行代码是什么意思?
b = (gen_rand_uniform()>0.5)?1:0;
Run Code Online (Sandbox Code Playgroud)
这gren_rand_uniform()是一个生成随机0和1数字的函数.但是我不明白它们的含义>0.5和1:0.
我知道这应该是一个基本问题,请耐心等待.
谢谢!
Chr*_*utz 12
我不认为get_rand_uniform()你认为它做了什么.它可能看起来像这样:
float get_rand_uniform(void);
Run Code Online (Sandbox Code Playgroud)
或者也许吧double.重点是,它返回0到1 之间的随机十进制数.所以这个:
get_rand_uniform() > 0.5
Run Code Online (Sandbox Code Playgroud)
是检查该数字是否接近1或0.并且:
x ? y : z
Run Code Online (Sandbox Code Playgroud)
是三元条件运算符,它具有与此相同的功能:
if(x) { y } else { z }
Run Code Online (Sandbox Code Playgroud)
除了三元运算符是表达式.所有这一切:
get_rand_uniform() > 0.5 ? 1 : 0
Run Code Online (Sandbox Code Playgroud)
基本上是将随机浮点数舍入为1或0,这个:
b = get_rand_uniform() > 0.5 ? 1 : 0;
Run Code Online (Sandbox Code Playgroud)
指定随机选择1或0 b.我相信这里的括号是不必要的,但如果你喜欢它们,那就去吧.
Mic*_*ngh 11
这是速记.在您给出的示例中,它相当于:
if (gen_rand_uniform() > 0.5) {
b = 1;
} else {
b = 0;
}
Run Code Online (Sandbox Code Playgroud)
由于gen_rand_uniform()可能在1和之间生成均匀分布的随机数0,因此该值高于0.5的可能性为50%.这意味着获得a 1或a的几率为50%0