如何从0-4生成随机整数,使得相同的数字不会连续生成两次?例如,如果3是第一次生成的数字,那么0,1,2,4将是第二次随机生成的可能数字。如果第二次生成2,那么0,1,3,4将是第三次随机生成的可能数字,依此类推。
发布于 2013-04-01 05:06:05
int oldrand = <prior random number>;
int adder = randomNumberGenerator() % 4;
int newrand = (oldrand + adder + 1) % 5;发布于 2013-04-01 05:17:04
uint32_t myRandomNumber(uint32_t upperBound, uint32_t avoid) {
if (avoid < upperBound) {
--upperBound;
}
uint32_t number = arc4random_uniform(upperBound);
if (number >= avoid) {
++number;
}
return number;
}第一次这样叫它:
uint32_t number = myRandomNumber(5, 5);在第一次之后这样调用它:
number = myRandomNumber(5, number);发布于 2013-04-01 06:04:04
它可以使用2个数组生成;1个是排序的,另一个是通过从排序的形式中随机获取对象而创建的
-(NSMutableArray *)generateRandomNumbersFrom:(int) a to:(int)b
{
NSMutableArray * numbersWillBeChosen=[NSMutableArray new];
NSMutableArray * randomList=[NSMutableArray new];
//add the numbers that will create your ramdom list in order
for(int k=0;k<=(b-a);k++)
{
[numbersWillBeChosen addObject:@(a+k)];
}
//create random list
for (int p=(b-a)+1; p>0; p--) {
int rand= arc4random()%p;
[randomList addObject:[numbersWillBeChosen objectAtIndex:rand]];
[numbersWillBeChosen removeObjectAtIndex:rand];
}
NSLog(@"%@",randomList);
return randomList;
}你可以根据你的情况打电话
randList=[self generateRandomNumbersFrom:0 to:4];https://stackoverflow.com/questions/15734366
复制相似问题