如何生成非重复随机数?
我在很多网站上都看过这个,但是他们提供了main.c文件代码。
当我使用main.c文件时,代码工作正常,但是当我尝试转换为my.m文件时,它无效。
示例:
我需要随机获取0-10之间的所有数字。数字不应再重复。
答案 0 :(得分:2)
NSMutableArray *storeArray = [[NSMutableArray alloc] init];
BOOL record = NO;
int x;
for (int i=0; [storeArray count] < 10; i++) //Loop for generate different random values
{
x = arc4random() % 10;//generating random number
if(i==0)//for first time
{
[storeArray addObject:[NSNumber numberWithInt:x]];
}
else
{
for (int j=0; j<= [storeArray count]-1; j++)
{
if (x ==[[storeArray objectAtIndex:j] intValue])
record = YES;
}
if (record == YES)
{
record = NO;
}
else
{
[storeArray addObject:[NSNumber numberWithInt:x]];
}
}
}
NSLog(@" Non Repeated Random Numbers : %@",storeArray);
你可以试试这段代码吗?可能是你的用途
答案 1 :(得分:2)
srand(time(NULL));
int s[10];
BOOL fl = 1;
for (int i = 0; i<10; i++) {
while (fl) {
s[i] = rand()%10;
fl = 0;
for (int j = 0; j < i; j++) {
if (s[j] == s[i]) {fl = 1; j = i+1;}
}
}
}
答案 2 :(得分:2)
int n = 10;
NSMutableArray *numbers = [NSMutableArray array];
for (int i = 0; i <= n; i++) {
[numbers addObject:[NSNumber numberWithInt:i]];
}
NSMutableArray *result = [NSMutableArray array];
while ([numbers count] > 0) {
int r = arc4random() % [numbers count];
NSNumber *randomElement = [numbers objectAtIndex:r];
[result addObject:randomElement];
[numbers removeObjectAtIndex:r];
}
NSLog(@"%@", result);
答案 3 :(得分:2)
希望以下代码行可以帮助您
srand(time(NULL));
int randomIndex = rand() % limit;
[reportIDTextField setText:[NSString stringWithFormat:@"%i", randomIndex]];
此代码的好处是它不允许重复的随机数。 限制 ,用于随机数。
希望这就是你要找的东西。
享受编码:)
答案 4 :(得分:0)
试试这个: - 这将随机产生0到10之间的数字。
srand(time(NULL));
int n = 11;
int card[n];
for (int y=0; y<n; y++) {
card[y] = y;
}
for(int q= 0 ;q<3;q++) {
for (int y=0; y<(n-1); y++) {
int r = y + (arc4random() % (n-y));
int temp = card[y]; card[y] = card[r]; card[r] = temp;
}
}
for (int g=0;g<n ; g++) {
int w = card[g];
NSLog(@"%i",w);
}
答案 5 :(得分:0)
你可以做这样的事情
number = (arc4random()%10)+1; //Generates Number from 1 to 10.
将其保存到数组中 然后你可以设置一个条件,这将检查数字是否存在于数组中。 如果没有,那么将它添加到数组中,如果它已经存在,那么只需将其丢弃。
注:“永远不要添加或增加随机数,以获得'更好'的随机性 :)