Как генерировать случайные числа от 1 до 10? - PullRequest
1 голос
/ 02 декабря 2011

Можно ли генерировать случайные числа в диапазоне от 1 до 10, но это не должно быть 5?

Ответы [ 3 ]

6 голосов
/ 02 декабря 2011
#include <stdlib.h>

// ...

int i;

do {
   i = rand() % 10 + 1; // generate random number from 1 to 10
} while (i == 5);       // repeat until number != 5
6 голосов
/ 02 декабря 2011
int x = arc4random()%9;
x += x>=4? 2 : 1
2 голосов
/ 02 декабря 2011

Простое решение состоит в том, чтобы сгенерировать случайное число в диапазоне от 1 до 10 с помощью системной функции, а если оно окажется равным 5, сгенерируйте его снова, пока это не так. Это решение имеет крошечную вероятность того, что ваша функция не вернется, пока iPhone не умрет :). Альтернатива указана ниже

Другим решением является генерация случайного числа с использованием системной функции между 1-9 и картой 5-9 как 6-10

int GenRandomNumber()
{
    int x = GetSystemRandomBetween1and9();
    if ( x >= 5 )
      x += 1;
    return x;
}
...