(float)arc4random() を使用して [0, 1[ に含まれる float 乱数を生成するにはどうすればよいですか?
私のコードは
do {
c = ((float)arc4random() / 0x100000000);
}
while (c == 1.0);
もっと良いものはありますか?
(float)arc4random() を使用して [0, 1[ に含まれる float 乱数を生成するにはどうすればよいですか?
私のコードは
do {
c = ((float)arc4random() / 0x100000000);
}
while (c == 1.0);
もっと良いものはありますか?
2つの間にいくつの可能な数字が必要かによって異なりますか?
しかし、あなたは使うことができます...
float numberOfPossibilities = ...;
float random = (float)arc4random_uniform(numberOfPossibilities) / numberOfPossibilities;
1を除外するには...
float random = (float)arc4random_uniform(numberOfPossibilities - 1) / numberOfPossibilities;
// Get a value greater than the greatest possible random choice
double one_over_max = UINT32_MAX + 1L;
// Use that as the denominator; this ratio will always be less than 1
double half_open_result = arc4random() / one_over_max;
したがって、解像度 (可能な結果値の数) は、元のランダム関数の解像度と同じです。最大結果と間隔の上部との間のギャップは、選択した分母と元の結果数との差であり、分母を上回っています。この場合、それは 1/4294967296 です。かなり小さい。
次のように使用できます。
Float num = (arc4random() % ([[filteredArrayofPerticularword count] FloatValue]));
そのfilteredArrayofPerticularword配列に、番号を格納できます。