我有一个非常基本的随机数函数,它可以从一个范围内生成一个随机数;目标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