我有一个非常基本的随机数函数,可以从一个范围中生成一个随机数;
即:
// 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更加可读。
我不确定如何制作可选参数或强制随机化继续循环,直到找到可选的模数值。
另一个问题是,如果没有可寻找的模数,有时循环可以永远继续。
即;
0到100之间的随机化并返回模数为5的值。
编辑:这应该适用于任何范围,无论最小值或最大值是多少。以上数字只是示例。
答案 0 :(得分:3)
ITYM 多个 5.对于您的示例,您只需生成0到20之间的随机值,然后将其乘以5.
答案 1 :(得分:-1)
我认为循环可以运作得很好:
NSUInteger i = 0;
do {
NSUInteger i = (arc4random() % (maxNumber - minNumber)) + minNumber;
} while(i % 5 != 0);
答案 2 :(得分:-1)
整数除法将确保您的数字是roundNumber
的倍数,因为它会截断除数中的小数,然后在乘法中恢复原始的舍入数。
// The random is seeded earlier on in the applicationDidFinishLaunching() function
-(NSUInteger)makeRandomNumber:(NSUInteger)minNumber to:(NSUInteger)maxNumber round:(NSUInteger) roundNumber
{
NSUInteger i = (arc4random() % (maxNumber - minNumber)) + minNumber;
return (i / roundNumber) * roundNumber;
}