2016-03-16 3 views
9

Я пытаюсь создать 10-элементный массив уникальных случайных целых чисел. Однако я не могу создать массив с уникальными значениями. Есть ли в Джулии что-то вроде Pythons sample function?Julia: генерация уникального случайного целочисленного массива

numbers = zeros(Array(Int64, 10)) 
rand!(1:100, numbers) 

Спасибо.

ответ

13

Существует sample функция в StatsBase:

using StatsBase 
a = sample(1:100, 10, replace = false) 

Это будет опираться образец длиной 10 от 1: 100 без замены.

6

Если производительность не является проблемой (т. Е. Диапазон выборки не слишком велик или количество образцов близко к диапазону выборки), и если вы не хотите использовать дополнительный пакет по любой причине, попробуйте :

a = randperm(100)[1:10]

1

уникальный (ITR [, DIM])

Возвращает массив, содержащий только уникальные элементы итерируемый ITR

unique([rand(1:100) for r in 1:20])[1:10] 

Set()

Набор представляет собой набор элементов, так же, как массив или словарь, без каких-либо дублирующих элементов.

{rand(1:100) for r in 1:20}[1:10] 
+1

Это не гарантируется для запуска без ошибок. Также может быть очень маловероятным для определенного ввода. – reschu