比方說,我有一個內部有50-100個對象的NSArray。我怎樣才能以隨機順序放置數組?如何隨機化NSArray?
回答
有很多方法可以做到這一點,但大多數方法只涉及簡單地生成隨機數。也許你可以使用使用一個NSMutableArray此技術:
- 生成(假定50種元素)
- 交換元件0和任何數目你產生
- 生成1之間的隨機數0和49之間的隨機數49個
- 交換元素1和任何數量的你產生
- 等等
這將可能是最高效的方式。
示例代碼(未測試):
srandom(time(NULL));
for (NSInteger x = 0; x < [array count]; x++) {
NSInteger randInt = (random() % ([array count] - x)) + x;
[array exchangeObjectAtIndex:x withObjectAtIndex:randInt];
}
此外,您可以通過,而第一個具有對象使用兩個NSMutableArray的對象,並簡單地循環,選擇一個隨機,並將其添加到其他結束一。儘管如此,就地方法可能會更快。
好得多! – nonamelive 2010-08-04 07:50:50
這是Fisher-Yates算法的一個版本。 http://en.wikipedia.org/wiki/Fisher-Yates_shuffle – JeremyP 2010-08-04 08:29:52
isnt arc4random比較慢? – wahkiz 2011-03-09 04:11:41
NSArray *test = [NSArray arrayWithObjects:@"AA",@"BC",@"DE",@"EG",@"FA",@"GQ",@"DA"];<br>
NSSet *testset = [NSSet setWithArray:test];
NSArray *randomorder = [testset allObjects];
NSLog(@"random : %@",randomorder);<br><br>
顯然NSSet沒有索引。因此,當轉換爲NSSet並返回時,NSArray對象可能會混亂。這是一個黑客解決方案,但它的工作原理(不確定這一點)。
如果你把重複的對象放入一個集合會發生什麼? – 2011-04-04 21:24:19
- 1. 隨機4x4 2D NSArray Objective-C
- 2. 如何隨機化輸出
- 3. 如何隨機化Excel行
- 4. 如何隨機化切片?
- 5. 如何隨機化方法?
- 6. NSArray的到的NSMutableArray作爲隨機堆
- 7. 如何在iPhone中使用NSArray創建隨機字符串?
- 8. 如何在C(Linux)中隨機化()'隨機數?
- 9. 隨機化
- 10. 隨機化BigInteger
- 11. 隨機化或隨機的陣列
- 12. 如何隨機化sql結果集(列)?
- 13. 如何在Timer中隨機化週期?
- 14. 如何在swift中隨機化button.setTitle?
- 15. 如何隨機化佈局的Android
- 16. 如何隨機化一個NSMutableArray?
- 17. 如何隨機化啓動畫面?
- 18. 如何隨機化兩個UITextField變量?
- 19. 如何隨機化圖像的順序?
- 20. 如何輕鬆隨機化數組?
- 21. 如何讓Xcode隨機化圖片?
- 22. 如何隨機化C++中的輸出
- 23. 隨機化身發電機
- 24. R:隨機化data.frame
- 25. 代碼隨機化
- 26. 治療隨機化
- 27. 隨機化爲了
- 28. 隨機化序列
- 29. 隨機化功能
- 30. 無法隨機化
我提交問題的唯一原因是因爲我搜索範圍很廣,無法找到重複的線程。感謝您的鏈接!使用arc4random()的 – 2010-08-05 04:14:13