Генерация случайных чисел из массива с неповторяющимися значениями

Чтобы сгенерировать случайное число из массива, в котором предыдущее значение не равно текущему значению, вы можете использовать следующие методы:

Метод 1: перетасовка и итерация
Один из подходов — перетасовать массив случайным образом, а затем выполнить итерацию по нему, проверяя, что предыдущее значение не равно текущему значению. Вот пример на Python:

import random
def generate_random_number(arr):
    random.shuffle(arr)
    for i in range(1, len(arr)):
        if arr[i] != arr[i-1]:
            return arr[i]
    return None  # Handle the case where no suitable number is found
# Example usage:
numbers = [1, 2, 3, 4, 5]
random_number = generate_random_number(numbers)
print(random_number)

Метод 2: произвольный выбор и проверка
Другой подход заключается в случайном выборе значения из массива и проверке того, что оно не равно предыдущему значению. Если это так, повторяйте процесс, пока не будет найдено подходящее число. Вот пример на JavaScript:

function generateRandomNumber(arr) {
    var previousValue = null;
    var randomIndex, randomValue;
    do {
        randomIndex = Math.floor(Math.random() * arr.length);
        randomValue = arr[randomIndex];
    } while (randomValue === previousValue);

    return randomValue;
}
// Example usage:
var numbers = [1, 2, 3, 4, 5];
var randomNumber = generateRandomNumber(numbers);
console.log(randomNumber);

Метод 3: рекурсивный подход
Вы также можете использовать рекурсивную функцию, которая продолжает генерировать случайные числа, пока не будет найдено подходящее число. Вот пример на Java:

import java.util.Random;
public class RandomNumberGenerator {
    private static int generateRandomNumber(int[] arr, int previousValue) {
        Random random = new Random();
        int randomIndex = random.nextInt(arr.length);
        int randomNumber = arr[randomIndex];

        if (randomNumber != previousValue) {
            return randomNumber;
        } else {
            return generateRandomNumber(arr, previousValue);
        }
    }

    public static void main(String[] args) {
        int[] numbers = {1, 2, 3, 4, 5};
        int previousValue = -1;  // Set an initial previous value
        int randomNumber = generateRandomNumber(numbers, previousValue);
        System.out.println(randomNumber);
    }
}