我需要一種算法,它從3d數組中取出一些隨機元素並將其值設置爲零,然後無法選擇拾取的元素之一,它會繼續直到特定數量的元素被設置爲零。 我知道一些需要大量內存和操作的方式。但我需要一些能夠以最少的操作功能來做到的事情。 非常感謝。 哦...忘了說這個語言是Objective-C。如何清零3d數組中的新隨機元素
0
A
回答
0
NSMutableArray *alreadyPicked=[NSMutableArray new];
NSInteger loop=0;
while(loop<=array[0].count+array[1].count+array[2].count){
NSInteger index0D=arc4random()%array[0].count;
NSInteger index1D=arc4random()%array[1].count;
NSInteger index2D=arc4random()%array[2].count;
// pickedElement
array[index0D][index1D][index2D]=0;
NSString *temp=[NSString stringWithformat:@"%d,%d,%d",index0D,index1D,index2D];
if(![alreadyPicked containsObject:temp]){
[alreadyPicked addObject:temp];
loop++1;
}
}
0
假設非零元素僅允許您使用以下算法,數組中
-(void) randZeroMaker:(NSMutableArray*)array withNumberElements:(NSInteger*)count {
while(count > 0){
int x = randGen(array.length);
int y = randGen([array objectAtIndex:0].length);
int z = randGen([[array objectAtIndex:0] objectAtIndex:0].length);
if ([[[array objectAtIndex:x] objectAtIndex:y] objectAtIndex:z] == 0) {
[[[array objectAtIndex:x] objectAtIndex:y] objectAtIndex:z] = 0;
count--;
}
}
}
請你糾正我,如果我錯了!
這是空間中的O(1)和時間上的O(count + k)。我認爲這是最好的。
+0
我認爲你的if語句是爲了!而不是== – Fonix 2013-03-07 11:39:22
+0
對於@Fonix – 2013-03-07 11:53:07
相關問題
- 1. 如何打印隨機數組元素?
- 2. 隨機化數組元素
- 3. 隨機數組元素
- 4. 隨機化數組中的元素?
- 5. 數組中的隨機元素
- 6. 如何清除數組中的元素?
- 7. 如何從C中的數組中隨機選取元素?
- 8. 隨機化我的數組元素
- 9. 從數組的特定元素中選擇隨機元素
- 10. 如何從numpy.ndarray中隨機選擇一些非零元素?
- 11. 如何隨機地替換爲矩陣元素的10%到零
- 12. 如何從數組中選擇一個隨機元素
- 13. Javascript - 如何從數組中隨機挑選元素?
- 14. 如何從數組中選擇隨機元素?
- 15. 如何從Perl數組中隨機取n個元素?
- 16. 我們如何在數組中選擇一個隨機元素?
- 17. 如何在二維數組中選取一個隨機元素
- 18. 如何從數組中獲得隨機元素?
- 19. 如何在Javascript中選擇加權隨機數組元素?
- 20. 如何在Javascript中使用隨機數組元素onclick
- 21. PHP如何從多維數組中獲取隨機元素?
- 22. 清除數組分配新的元素
- 23. 用PHP隨機輸出數組元素
- 24. 重複隨機數組元素
- 25. 數組操作 - 隨機選擇元素
- 26. 分發數組元素隨機到新的陣列
- 27. 如何用隨機選擇的數組元素替換子串?
- 28. Javascript數組隨機化元素到選定的元素
- 29. 在java中隨機化一組元素
- 30. 隨機元素
感謝您的回答。我要測試他們 – user21087 2013-03-09 12:47:28