我在 iOS 应用程序的函数中调用 arc4random 以生成从 -5 到 6 的随机值。double num;for (int i = 0; i < 3; i++) { num = (arc4random() % 11) - 5; NSLog(@"%0.0f", num);}我从控制台得到以下输出。2012-05-01 20:25:41.120 Project32[8331:fb03] 02012-05-01 20:25:41.121 Project32[8331:fb03] 12012-05-01 20:25:41.122 Project32[8331:fb03] 42949672950和1是范围内的值,但是哇,4294967295是从哪里来的?将 arc4random() 更改为 rand() 可以解决问题,但是 rand() ,当然,需要播种。 最佳答案 arc4random() 返回一个 u_int32_t —— 这是一个无符号整数,不代表负值。每次 arc4random() % 11 得出一个数字 0 ≤ n double s 当然可以表示负数,但您不会转换为 double ,直到为时已晚。在那里贴一个类型转换: num = (double)(arc4random() % 11) - 5;在减法之前提升模的结果,一切都会好起来的。关于objective-c - 为什么 arc4random 返回古怪的值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10406216/
10-10 20:42