1〜10の乱数を生成することは可能ですが、5であってはなりませんか?
5672 次
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 に答える