Случайный: выбор двух чисел в диапазоне, если они совпадают, выберите одно новое. - PullRequest
0 голосов
/ 02 августа 2020

Я собираю и кладу спрайты друг на друга, и я делаю это, выбирая их случайным образом из массива. Чтобы создать иллюзию того, что они не повторяются, очень важно, чтобы они не были одинаковыми.

Как мне добиться этого, не добавляя к моему массиву и, следовательно, выводя мой индекс за пределы массива? `

  //Random Sprite Value
    int bloodSprite  = Random.Range(0, 12);
    int bloodSprite2 = Random.Range(0, 12);

    if (bloodSprite == bloodSprite2)
    {
        // what do I write here? (if here)
    }

Ответы [ 3 ]

1 голос
/ 02 августа 2020

do.. while будет полезно здесь

//Initialize default value to bloodSprite and bloodSprite2
int bloodSprite = int.MinValue;
int bloodSprite2 = int.MinValue;
do
{
    //Random Sprite Value
    bloodSprite  = Random.Range(0, 12);
    bloodSprite2 = Random.Range(0, 12);
    //At the end, check condition in while.
}while(bloodSprite == bloodSprite2);

int.MinValue: константа представляет наименьшее возможное значение целого числа.

В приведенном выше решении мы определили наименьшее возможное значение int для bloodSprit, которое обновит его сбоку do..while() l oop

Почему мы использовали do..while() l oop?

  • do.. while l oop сначала выполнить код и проверить условие в конце l oop. Это позволяет нам выполнить код внутри do..while l oop хотя бы один раз.

Блок-схема:

введите описание изображения здесь

1 голос
/ 02 августа 2020

Сначала выберите случайное число от 0 до 12, например, x, затем выберите случайное значение от 0 до x - 1 или от x + 1 до 12. Вы можете выбрать любой.

int s1 = Random.Range(0, 12);
int s2 = s1 == 0 ? Random.Range(s1, 12) : Random.Range(0, s1);

Вы не можете для этого действительно нужен al oop.

0 голосов
/ 02 августа 2020

Это должно сработать для вас.

while(bloodSprite == bloodSprite2)
{
   bloodSprite2 = Random.Range(0, 12);
}

Предупреждение: очень малая вероятность того, что закончится бесконечность, пока l oop.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...