我有一個非常基本的隨機數函數,它可以從一個範圍內生成一個隨機數;目標C中模數的隨機數
即:
// The random is seeded earlier on in the applicationDidFinishLaunching() function
-(NSUInteger)makeRandomNumber:(NSUInteger)minNumber to:(NSUInteger)maxNumber
{
//NSUInteger i = (NSUInteger)((random()/(double)RAND_MAX) * y);
NSUInteger i = (arc4random() % (maxNumber - minNumber)) + minNumber;
return i;
}
我想一個可選模運算添加到這個功能,讓你只返回是某種模數。
我想要這樣做爲隨機的人產生工資,我發現工資,5或0多得多可讀性。
我不確定如何製作可選參數或強制隨機化繼續循環,直到找到可選的模數值。
另一個問題是,如果沒有找到模量,有時循環可能會永遠持續下去。
ie;
隨機化0和100,並返回一個值,該值是5。
EDIT模量之間:這應該與任何範圍內工作,而不管什麼MIN或MAX是。以上數字只是例子。
使用模運算符計算隨機數通常是不好的。你不能保證你的隨機數發生器的低位比特是隨機的。 – 2010-06-24 13:36:55
註釋掉的randomiser是一種更好的隨機分配方法嗎? – zardon 2010-06-25 10:44:10
我發現通過一些測試,範圍不會返回您的範圍內的maxNumber。 (代碼) NSUInteger i =(arc4random()%(maxNumber - minNumber))+ minNumber;例如,如果我在1到10之間的範圍內做了一個rand,我不會得到10,也不會得到1.如果你想要一個範圍包括1和10(最小值和最大值)該算法需要調整。 – zardon 2010-06-25 11:15:16