1

1〜10の乱数を生成することは可能ですが、5であってはなりませんか?

4

3 に答える 3

6
#include <stdlib.h>

// ...

int i;

do {
   i = rand() % 10 + 1; // generate random number from 1 to 10
} while (i == 5);       // repeat until number != 5
于 2011-12-02T14:03:10.970 に答える
6
int x = arc4random()%9;
x += x>=4? 2 : 1
于 2011-12-02T14:04:40.797 に答える
2

簡単な解決策は、システム関数を使用して1〜10の乱数を生成し、それが5である場合は、そうでない場合まで再度生成することです。このソリューションには、iPhoneのバッターが死ぬまで関数が戻らないというごくわずかな確率があります:)。代替案を以下に示します

別の解決策は、1〜9のシステム関数を使用して乱数を生成し、5〜9を6〜10としてマップすることです。

int GenRandomNumber()
{
    int x = GetSystemRandomBetween1and9();
    if ( x >= 5 )
      x += 1;
    return x;
}
于 2011-12-02T14:02:38.410 に答える