0〜10の一意の番号を生成しようとしているときに生成された番号を確認するにはどうすればよいですか。
randomNumber = arc4random()%10;
ユニークかどうか?
乱数を生成することはできますが、一意であるかどうかを確認することはできませんか?
ありがとう
重複を避けるために、次の乱数生成コードを参照してください。次のコードを実行すると、番号が重複することもありません。あなたがそれをユニークにしたいという意味なら。
#define COUNT 1000
#define RANGE 1000
int num[COUNT];
bool isNew(int idx, int val)
{
for (int i=0; i<idx; i++)
{
if (num[i] == val) return false;
}
return true;
}
for (int i=0; i<COUNT; i++)
{
do
{
num[i]=arc4random()%RANGE;
}
while (!isNew(i, num[i]));
NSLog(@"%d ", num[i]);
}
生成されたすべての数値を配列に保存し、重複が2つあるかどうかを確認できます。
番号が多ければ多いほど、生成された番号が一意であることが確実になります。
このコードを試してください...これにより、可変配列に設定されているすべての可能な一意の番号が得られます...
-(NSInteger) randomNumber {
NSInteger newRandomNumber = (NSInteger) arc4random() % 10;
NSInteger uniqueNumber;
if ([self.arrayContainingNumbers containsObject: [NSNumber numberWithInteger:newRandomNumber]]) {
[self randomNumber];
} else {
[self.arrayContainingNumbers addObject: [NSNumber numberWithInteger:newRandomNumber]];
}
uniqueNumber = [[self.mutableArrayContainingNumbers lastObject]integerValue];
NSLog(@"new Unique Number is %ld",(long)uniqueNumber);
return uniqueNumber; }
このメソッドを追加することを忘れないでください:)
-(NSMutableArray *) arrayContainingNumbers {
if (!_mutableArrayContainingNumbers) {
_mutableArrayContainingNumbers = [[NSMutableArray alloc] init];
}
return _mutableArrayContainingNumbers; }