나는 arc4random을 사용하여 난수를 생성하고 있습니다. 1-9 사이의 숫자를 생성하고 싶습니다. 0을 어떻게 제외시킬 수 있습니까?arc4random에서 숫자를 제외하는 방법은 무엇입니까?
int r = arc4random() % (9);
NSLog(@"Random Number: %d",r);
나는 arc4random을 사용하여 난수를 생성하고 있습니다. 1-9 사이의 숫자를 생성하고 싶습니다. 0을 어떻게 제외시킬 수 있습니까?arc4random에서 숫자를 제외하는 방법은 무엇입니까?
int r = arc4random() % (9);
NSLog(@"Random Number: %d",r);
int r = (arc4random() % 8) + 1
int r = arc4random() % 8 + 1;
이 작업에 %
을 사용하지 않으려는 다른 답변 (예 : one from me)을 참조하고 대신 사용해야하는 내용은 무엇입니까?
원하는 범위의 수를 얻을 때까지 당신은 단순히 당신이 원하지 않는 번호를 밖으로 던지기, 반복적으로 시도 할 수 있습니다. 이것은 수학에서 "acceptance-rejection method"라는 멋진 이름을 가지고 있습니다. 간단하고 작동합니다.
이론적으로 시간이 오래 걸린다는 우려가 들기 때문에. 그러나이 방법은 통계 응용 프로그램에서 항상 사용됩니다. while 루프를 통과 할 확률은 N이 증가함에 따라 빠르게 감소하기 때문에 루프를 통과하는 평균 횟수는 적습니다.
당신은lo
및
hi
(포함) 사이의 숫자를 생성하기 위해, 일반적으로
arc4random_uniform(9) + 1
로, arc4random_uniform()
을 사용할 수 있습니다
, 당신은 사용
arc4random_uniform(hi - lo + 1) + lo
것은 사용하지 않으려면 arc4random_uniform()
이고 방정식을 사용하여 얻은 결과 값이 균등하게 분배되지 않는다는 것을 지적하면서 arc4random()
을 계속 사용하려면
(arc4random() % (hi - lo + 1)) + lo
+1 간단하고 간단합니다. –
범위 내의 다른 숫자를 제외하려는 경우이 대답은 실제로 효과가 없습니다. Sheehan Alams의 제목은 "arc4random을 1에서 시작하고 싶습니다."또는 "arc4random을 사용할 때 첫 번째 숫자를 제외하고 싶습니다."와 같이 좀 더 구체적이어야합니다. 그냥 말하기 :) – Tommie