iOS彩票類(lèi)排列組合算法

1. 從一個(gè)范圍內(nèi)獲取一組不重復(fù)的隨機(jī)數(shù),返回這個(gè)數(shù)組:

頭文件:

/*

獲取隨機(jī)數(shù)

@param count獲取隨機(jī)數(shù)的個(gè)數(shù)

@param from隨機(jī)數(shù)的最小值

@param to最大值

@return一組隨機(jī)數(shù)

*/

+ (NSMutableArray*)getRandomArrayOfCount: (NSInteger)count rangeFrom:(NSInteger)from to:(NSInteger)to;

實(shí)現(xiàn):

+ (NSMutableArray*)getRandomArrayOfCount:(NSInteger)count rangeFrom:(NSInteger)from to:(NSInteger)to {

if(to-from+1< count) {

VDLog(@"個(gè)數(shù)超出取值范圍");

return nil;

}

NSMutableArray*array = [NSMutableArray new];

for(; ; ) {

NSString*object = [NSString stringWithFormat:@"%ld", from+arc4random()%(to-from+1)];

if(array.count==0) {

[array addObject:object];

continue;//數(shù)組元素個(gè)數(shù)為空,添加隨機(jī)數(shù),跳出本次循環(huán)

}

if([array containsObject:object]) {

continue;//數(shù)組內(nèi)包含本次循環(huán)的隨機(jī)數(shù),跳出本次循環(huán)

}

[array addObject:object];

if(array.count== count) {

return array;//個(gè)數(shù)達(dá)到要求,循環(huán)結(jié)束

}

}

}

2.組合算法

頭文件:

/**

計(jì)算出排列組合個(gè)數(shù)

例如從11個(gè)中選取5個(gè),totalNum就是11,pickNum就是5

@param picNum目標(biāo)個(gè)數(shù)

@param totalNum抽取對(duì)象個(gè)數(shù)

@return所有的排列組合的個(gè)數(shù)

*/

+ (NSInteger)getAllNumOfPossibleWithPicNum:(NSInteger)picNum totalNum:(NSInteger)totalNum;

實(shí)現(xiàn):

+ (NSInteger)getAllNumOfPossibleWithPicNum:(NSInteger)picNum totalNum:(NSInteger)totalNum {

if(picNum > totalNum) {

return 0;

}

else{

NSInteger num1 = [self factorialWithStartNumber:totalNum - picNum +1 endNumber:totalNum];

NSInteger num2 = [self factorialWithStartNumber:1 endNumber:picNum];

returnnum1/num2;

}

}

/**

階乘

@param startNumber起始數(shù)

@param endNumber結(jié)束數(shù)

@return階乘結(jié)果

*/

+ (NSInteger)factorialWithStartNumber:(NSInteger)startNumber

endNumber:(NSInteger)endNumber

{

NSInteger result =1;

for(; startNumber <= endNumber; startNumber ++) {

result = result * startNumber;

}

returnresult;

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容