随机生成“-1”或“1”的最短方法

5

我需要随机生成数字的正负号,要么是“-1”,要么是“1”...有没有更短的方法?我目前在使用以下代码,但它看起来很冗长:

sign = (round((arc4random() % 2)))-((round((arc4random() % 2))) == 0);

2个回答

12

关于 arc4random_uniform(2) ? -1 : 1 呢?

或者是 arc4random_uniform(2)*2 - 1


不错,就像一个随机二进制操作。 - Shizam
哦,非常好!乘以2再减去1,我甚至没有想到过! :) - Albert Renshaw
2
arc4random_uniform() 函数将返回一个小于上限的均匀分布的随机数。它避免了模数偏差。请参阅 arc4random manpage。 - Sebastian
1
另一种可能性(不值得再回答):static const int tmp[] = {-1, 1}; return tmp[arc4random_uniform(2)]; - twalberg
@twalberg 那也很酷!如果不止有两个数字(即-1和1),那么数组将非常有帮助。 - Albert Renshaw

1
short int randomNumber () {
return arc4random() % 2 ? 1 : -1;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接