我跟随一个例子,其中一个人希望生成1到100之间的随机数。
targetValue= 1 + Int(arc4random_uniform(100))
然后他说:
你也在调用函数arc4random_uniform()来传递一个 任意整数(整数)介于0和100之间。实际上, 你得到的最高数字是99,因为arc4random_uniform()对待 上限为独家。它只上升到100,而不是 直到并包括。要获得真正在1范围内的数字 - 100,你需要在arc4random_uniform()的结果中加1。
我不会猜到,所以我在Apple Developer网站上搜索了有关此功能的文档。对于我的生活,我无法找到它。有人能指出我吗?
答案 0 :(得分:2)
在搜索“arc4random_uniform”时,Google上的搜索结果为我:arc4uniform_random(3)
。这是通过在终端中运行man 3 arc4uniform_random
提供的相同文档。
相关部分:
u_int32_t arc4random_uniform(u_int32_t upper_bound);
arc4random_uniform()
将返回小于upper_bound
的均匀分布的随机数。建议使用arc4random_uniform()
而不是像arc4random() % upper_bound
这样的结构,因为当上限不是2的幂时,它会避免“模偏差”。
如上所述,上限是独占的,因此如果要包含上限,则需要增加界限,或者将结果向上移动。