Привет! Меня зовут Алексей, и я хотел бы поделиться своим опытом в заполнении массива уникальными рандомными числами в языке программирования Golang. Это задача, которая может быть полезна во многих случаях программирования, например, при создании игр или тестовых данных. В этой статье я расскажу, как это можно сделать в одной функции с наименьшей вычислительной сложностью.
Создание функции для заполнения массива
Первым шагом я создам функцию, которая будет заполнять массив уникальными рандомными числами⁚
go
package main
import (
″fmt″
″math/rand»
″time″
)
func fillArrayWithUniqueRandomNumbers(size int, min int, max int) []int {
rand.Seed(time.Now.UnixNano)
numbers ⁚ make([]int, size)
existingNumbers ⁚ make(map[int]bool)
for i ⁚ 0; i < size; i {
randomNumber ⁚ min rand.Intn(max-min 1)
for existingNumbers[randomNumber] {
randomNumber min rand.Intn(max-min 1)
}
numbers[i] randomNumber
existingNumbers[randomNumber] true
}
return numbers
}
Краткое объяснение этой функции⁚
- Сначала мы инициализируем генератор случайных чисел с помощью функции `rand.Seed`, чтобы получить случайные числа.
- Затем мы создаем пустой массив `numbers` длиной `size`.
- Мы также создаем пустой словарь `existingNumbers`, чтобы отслеживать уже сгенерированные числа.
- Далее мы используем цикл `for` для заполнения массива уникальными рандомными числами.
- Мы генерируем случайное число в диапазоне `min` и `max` с помощью `rand.Intn`.
- Затем мы проверяем, есть ли это число уже в `existingNumbers` с помощью цикла `while`.
- Если число уже существует, мы генерируем новое число до тех пор, пока не найдем уникальное число.
- После того, как мы находим уникальное число, мы записываем его в `numbers` и добавляем в `existingNumbers`, чтобы не было повторений.
- Наконец, мы возвращаем заполненный массив уникальными рандомными числами.
Пример использования функции
Чтобы проверить работоспособность функции, мы можем написать простую программу, которая вызывает функцию `fillArrayWithUniqueRandomNumbers` и выводит результат⁚
go
package main
import (
″fmt″
)
func main {
size ⁚ 10
min ⁚ 1
max ⁚ 100
numbers ⁚ fillArrayWithUniqueRandomNumbers(size, min, max)
fmt.Println(numbers)
}
После запуска этой программы, мы получим массив из 10 элементов, заполненных уникальными рандомными числами в диапазоне от 1 до 100.
Мы разработали функцию на языке Golang для заполнения массива уникальными рандомными числами. С помощью использования генератора случайных чисел и словаря, мы смогли достичь наименьшей вычислительной сложности при заполнении массива. Надеюсь, эта статья была полезной для вас!