Как рандомизировать между двумя значениями? - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь, чтобы этот Vector2 имел первое значение, равное -7 или 7. Второе значение, равное -5, 5 или что-то среднее.Я не могу понять, как сделать первое значение -7 или 7 и ничего между ними.Пожалуйста, помогите

rb2d.velocity = new Vector2(Random(-7,7) , Random.Range(-5,5));

Ответы [ 3 ]

0 голосов
/ 20 февраля 2019

Вы можете использовать Next, чтобы случайным образом сгенерировать -1 или 1, например:

Random r = new Random();
int randomSign = r.Next(2) * 2 - 1;

Чтобы сделать это 7 или -7, вы просто умножаете на 7:

rb2d.velocity = new Vector2(randomSign * 7 , Random.Range(-5,5));

Поскольку это похоже на Unity, вот как это сделать с помощью метода Unity Random.Range:

int randomSign = Random.Range(0, 1) * 2 - 1;
0 голосов
/ 20 февраля 2019

Это решение вашего вопроса:

Random random = new Random();

// Get a value between -5 and 5. 
// Random.Next()'s first argument is the inclusive minimum value, 
// second argument is the EXCLUSIVE maximum value of the desired range.
int y = random.Next(-5, 6);

// Get value of either 7 or -7
int[] array = new int[] { 7, -7 };
int x = array[random.Next(array.Length)]; // Returns either the 0th or the 1st value of the array.

rb2d.velocity = new Vector2(x, y);

Важно знать, что random.Next (-5, 6); возвращает значение между-5 и 5 .Не -5, а 6, как кажется на первый взгляд.(Проверьте описание функции.)

0 голосов
/ 20 февраля 2019

Это должно быть примерно так:

 int[] numbers = new int[] { -7, 7 };
  var random = new Random();
  vrb2d.velocity = new Vector2(numbers [random.Next(2)] , Random.Range(-5,5));

Поместите все числа в вектор и случайным образом выберите индекс.Достаточно просто.

...