หากคุณมีคุณNSMutableArray
จะสุ่มสับเปลี่ยนองค์ประกอบได้อย่างไร
(ฉันมีคำตอบของฉันเองสำหรับเรื่องนี้ซึ่งโพสต์ด้านล่าง แต่ฉันใหม่กับ Cocoa และฉันสนใจที่จะรู้ว่ามีวิธีที่ดีกว่านี้หรือไม่)
อัปเดต: ตามที่ระบุไว้โดย @Mukesh ตั้งแต่ iOS 10+ และ macOS 10.12+ มี-[NSMutableArray shuffledArray]
วิธีการที่สามารถใช้เพื่อสลับ ดูhttps://developer.apple.com/documentation/foundation/nsarray/1640855-shuffledarray?language=objcสำหรับรายละเอียด (แต่โปรดทราบว่าสิ่งนี้จะสร้างอาร์เรย์ใหม่แทนที่การสับเปลี่ยนองค์ประกอบในที่)
for (NSUInteger i = self.count; i > 1; i--) [self exchangeObjectAtIndex:i - 1 withObjectAtIndex:arc4random_uniform((u_int32_t)i)];
API
คือมันจะส่งคืนArray
ที่อยู่ไปยังตำแหน่งใหม่ในหน่วยความจำ