我在歷史記錄板中創建了10個UIButton,好嗎?
我想添加不重複這些數字的隨機數字,即每當查看被加載時散佈的從0到9的數字。帶有隨機文本/值或標籤的UIButton
我試圖在Google上找到一種方法來使用我現有的按鈕(10個UIButton),並將它們應用於隨機值。找到大多數方法(arc4random() % 10
),重複這些數字。
所有的結果發現,創建按鈕的動態。任何人都通過這個?
我在歷史記錄板中創建了10個UIButton,好嗎?
我想添加不重複這些數字的隨機數字,即每當查看被加載時散佈的從0到9的數字。帶有隨機文本/值或標籤的UIButton
我試圖在Google上找到一種方法來使用我現有的按鈕(10個UIButton),並將它們應用於隨機值。找到大多數方法(arc4random() % 10
),重複這些數字。
所有的結果發現,創建按鈕的動態。任何人都通過這個?
創建一個數組的數組。然後執行一組隨機交換數組中的元素。你現在有隨機順序的唯一號碼。
- (NSArray *)generateRandomNumbers:(NSUInteger)count {
NSMutableArray *res = [NSMutableArray arrayWithCapacity:count];
// Populate with the numbers 1 .. count (never use a tag of 0)
for (NSUInteger i = 1; i <= count; i++) {
[res addObject:@(i)];
}
// Shuffle the values - the greater the number of shuffles, the more randomized
for (NSUInteger i = 0; i < count * 20; i++) {
NSUInteger x = arc4random_uniform(count);
NSUInteger y = arc4random_uniform(count);
[res exchangeObjectAtIndex:x withObjectAtIndex:y];
}
return res;
}
// Apply the tags to the buttons. This assumes you have 10 separate ivars for the 10 buttons
NSArray *randomNumbers = [self generateRandomNumbers:10];
button1.tag = [randomNumbers[0] integerValue];
button2.tag = [randomNumbers[1] integerValue];
...
button10.tag = [randomNumbers[9] integerValue];
偉大的解決方案!我想動態地獲取TAG。但我比插入數組中的按鈕更好。再次感謝 – 2013-03-02 23:15:26
@meth有正確的想法。如果你想確保數字不重複,請嘗試如下所示:(注意:頂部會生成最高數字,確保這=數量,否則這將永遠循環並永遠;)
- (NSArray*) makeNumbers: (NSInteger) amount withTopBound: (int) top
{
NSMutableArray* temp = [[NSMutableArray alloc] initWithCapacity: amount];
for (int i = 0; i < amount; i++)
{
// make random number
NSNumber* randomNum;
// flag to check duplicates
BOOL duplicate;
// check if randomNum is already in your array
do
{
duplicate = NO;
randomNum = [NSNumber numberWithInt: arc4random() % top];
for (NSNumber* currentNum in temp)
{
if ([randomNum isEqualToNumber: currentNum])
{
// now we'll try to make a new number on the next pass
duplicate = YES;
}
}
} while (duplicate)
[temp addObject: randomNum];
}
return temp;
}
我使用@maddy指出的隨機代,但它不是正確的做法,但是,部分是......但謝謝! – 2013-03-02 23:11:24
呃?您的問題目前沒有意義,我擔心 - 我認爲翻譯中可能丟失了某些東西? – sjwarner 2013-03-02 18:43:03
好吧,我會編輯。 – 2013-03-02 18:48:51
@sjwarner編輯。 – 2013-03-02 18:55:01