Anda harus mengisi array dengan setiap angka dari 0-n
inklusif. Tidak ada angka yang harus diulang. Namun mereka harus dalam urutan acak.
Aturan
Semua aturan kode-golf standar dan celah standar dilarang
Array harus dibuat pseudo-acak. Setiap permutasi yang mungkin harus memiliki probabilitas yang sama.
Memasukkan
n
dengan cara apa pun diizinkan di pos I / O pada meta.
Keluaran
Array angka diacak dari 0-n
inklusif.
Jawaban:
Perl 6 , 14 byte
Cobalah
Diperluas:
sumber
05AB1E , 3 byte
Cobalah online!
sumber
Pyth, 3 byte
Demonstrasi
.S
mengocok. Secara implisit melemparkan integer inputn
ke kisaran[0, 1, ..., n-1]
.h
adalah+1
, dan input diambil secara implisit.sumber
R , 16 byte
dibaca dari
stdin
.sample
sampel secara acak dari vektor input, mengembalikan urutan acak (semu).Cobalah online!
sumber
Jelly , 3 byte
Cobalah online!
Penjelasan:
Solusi alternatif, 3 byte
Penjelasan:
Cobalah online!
sumber
Python 2 , 51 byte
Cobalah online!
Ada
random.shuffle()
tetapi memodifikasi argumen di tempat bukannya mengembalikannya ...sumber
random.shuffle
lambda n:shuffle(range(n+1))
tidak akan menulis output di mana pun.PHP, 42 Bytes
Cobalah online!
sumber
Bash,
1811 byteCobalah online!
sumber
Mathematica, 24 byte
sumber
MATL , 4 byte
Cobalah online!
Penjelasan
sumber
Brachylog , 2 byte
Cobalah online!
Penjelasan
sumber
Japt , 4 byte
Cobalah online
sumber
öx
sudah cukup sampai saya perhatikan bagian "inklusif". (Anda dapat menggantix
dengan hampir semua hal lain, btw)C #, 76 byte
Ini mengembalikan IOrderedEnumerable, saya harap tidak apa-apa, atau saya butuh beberapa byte lagi untuk .ToArray ()
sumber
CJam ,
76 byte1 byte dihapus berkat Erik the Outgolfer .
Ini adalah blok anonim (fungsi) yang mengambil bilangan bulat dari tumpukan dan menggantinya dengan hasilnya. Cobalah online!
Penjelasan
sumber
{),mr}
1 byte lebih pendek?Java 8,
11411197 byte-3 byte dan bug-fix berkat @ OlivierGrégoire .
-4 byte terima kasih kepada @Jakob .
-10 byte dengan menghapus
.toArray()
.Penjelasan:
Coba di sini.
sumber
n
. Memperbaiki dan golf:for(n++;--n>=0;l.add(n));
. Juga, saya katakan Anda tidak perlu mengembalikan array. Array dan daftar adalah sama di sebagian besar bahasa, jadi kembalikan daftarnya.>
seharusnya>=
.Stack
bukan aVector
dan ubah loop Anda menjadifor(;n>=0;l.add(n--));
. Dan mengembalikan ajava.util.List
pasti baik-baik saja.Ohm , 2 byte
Cobalah online!
sumber
Pyth, 4 Bytes
Coba di sini!
sumber
.S
dengan argumen integer sama dengan.SU
, dan[0..n]
dapat dikodekan sebagaiUh
, jadi Anda dapat menggunakan.SUh
, yang kemudian menjadi.Sh
.C, 75 byte
Fungsi rekursif yang diinisialisasi dari ujung array di jalan masuk, dan bertukar dengan elemen acak sebelum keluar.
sumber
n > 98
?a
menjadi para agar lebih cocok dengan aturan?Arang , 33 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode.
Tampaknya dibutuhkan 17 byte untuk menghapus elemen dari daftar di Charcoal.
Sunting: Hari ini hanya membutuhkan tiga byte, dengan asumsi Anda ingin menghapus semua kemunculan item dari daftar. Ini ditambah perubahan Arang lainnya memotong jawabannya menjadi 21 byte: Cobalah online!
sumber
APL (Dyalog) , 5 byte
Cobalah online!
Diasumsikan
⎕IO←0
, yang merupakan default pada banyak mesin.Penjelasan
⊢
argumen yang benar1+
tambahkan 1 ke dalamnya?⍨
menghasilkan angka 0 ..1+⊢
-1 dan secara acak menanganinya dalam array sehingga tidak ada dua angka yang berulangsumber
q / kdb +, 11 byte
Larutan:
Contoh:
Penjelasan:
Gunakan
?
operator dengan input negatif untuk memberikan daftar lengkap0->n
tanpa duplikat:sumber
TI-83 BASIC, 5 byte (membosankan)
Yap, seorang builtin.
randIntNoRep(
adalah token dua byte, danAns
satu byte.Lebih menyenangkan, 34 byte:
Langsung dari tibasicdev . Mungkin golf, tapi saya belum menemukan apa pun.
Kegunaannya: Mengurutkan array acak, menggerakkan elemen dari arg kedua (di
L₁
sini) dengan cara yang sama dengan elemen yang sesuai.sumber
JavaScript (ES6), 51 byte
sumber
f(5)
10 kali dan5
telah menjadi salah satu dari dua item terakhir setiap kali.1,5,4,0,2,3
&1,0,2,5,3,4
. EDIT: Dan beberapa prnt.sc/fe0goef(5)
1e5 kali dan temukan posisi rata-rata setiap angka dalam hasil. Array yang dihasilkan adalah[ 1.42791, 1.43701, 2.00557, 2.6979, 3.3993, 4.03231 ]
, jadi saya tidak berpikir itu seragam. ( kode )n=>(a=[...Array(n).keys(),n++]).reduce((a,v,i)=>([a[i],a[j]]=[a[j=n*Math.random()|0],v],a),a)
?random()
tidak seragam. Lihat (misalnya) en.wikipedia.org/wiki/BrowserChoice.eu#CriticismAceto ,
151416 byteTekan nol pada tumpukan, baca bilangan bulat, buat rentang, dan kocok:
Tetapkan tanda tangkap, panjang uji untuk 0, dan (dalam kasus itu) keluar:
Lain cetak nilai, baris baru, dan lompat kembali ke tes panjang:
(Saya harus mengubah kode karena saya menyadari saya salah membaca pertanyaan dan telah membangun rentang dari 1-n, bukan 0-n.)
sumber
Pergi , 92 byte
Sebagian besar kalah dari kebutuhan untuk menyemai PRNG.
Cobalah online!
sumber
Ruby, 20 byte
->n{[*0..n].shuffle}
sumber
8 ,
423634 byteKode
SED (Stack Effect Diagram) adalah
n -- a
Penggunaan dan contoh
sumber
Javascript (ES6), 68 byte
Membuat array formulir
Kemudian sortir dan kembalikan elemen terakhir dalam orde baru
sumber
J, 11 Bytes
Penjelasan:
Contoh:
sumber
Tcl , 90 byte
Cobalah online!
Tcl , 96 byte
Cobalah online!
sumber