NumPy random: Membuat Data Acak untuk Simulasi
TL;DR
NumPy random adalah modul buat bikin angka acak, dipakai buat simulasi, sampling, dan data dummy. Cara modern yang disarankan pakai np.random.default_rng() buat bikin generator, lalu panggil method kayak integers, random, atau normal. Kasih angka seed ke default_rng biar hasil acaknya bisa diulang sama persis, yang penting buat eksperimen yang perlu direproduksi.
NumPy random bikin angka acak buat simulasi, sampling, dan data dummy. Cara modern yang disarankan sekarang pakai np.random.default_rng() buat bikin generator, bukan fungsi lawas kayak np.random.rand langsung.
Buat analis, ini kepakai waktu kamu butuh data uji sebelum data asli siap, atau mau simulasi skenario bisnis kayak proyeksi penjualan.
Di sini kamu bakal belajar cara bikin generator, atur seed biar hasilnya bisa diulang, fungsi acak yang paling sering kepakai, plus contoh generate data dummy toko_berkah.
Apa itu NumPy random?
NumPy random adalah modul di dalam NumPy buat ngasilin angka acak dalam bentuk array. Kamu bisa bikin bilangan bulat acak, desimal acak, atau sampel dari distribusi tertentu kayak normal. Semua keluar sebagai array, jadi langsung bisa dipakai buat hitungan cepat tanpa loop.
Angka yang dihasilkan sebenernya pseudo-acak. Artinya keliatan acak tapi ditentuin sama rumus dari satu titik awal yang disebut seed. Ini justru berguna, karena kamu bisa atur seed biar hasil yang sama muncul lagi. Konsep array-nya aku bahas di dasar NumPy array.
Gimana cara bikin generator acak di NumPy?
Panggil np.random.default_rng() buat bikin objek generator, lalu pakai method-nya buat ngasilin angka. Cara ini yang direkomendasiin NumPy sejak versi 1.17, gantiin fungsi lama yang berbasis state global. Generator baru lebih cepat dan lebih aman dipakai bareng.
import numpy as np
rng = np.random.default_rng()
print(rng.integers(1, 7, size=5)) # 5 angka dadu, 1 sampai 6
print(rng.random(3)) # 3 desimal antara 0 dan 1
Perhatiin rng.integers(1, 7) balikin angka dari 1 sampai 6. Batas atasnya eksklusif, jadi 7 gak pernah keluar. Ini beda sama fungsi lawas randint, yang sering bikin bingung.
Kenapa perlu atur seed di NumPy random?
Kamu atur seed biar hasil acaknya bisa diulang sama persis tiap kali kode dijalankan. Ini penting buat eksperimen yang harus bisa direproduksi orang lain, atau buat debugging biar tiap run ngasih data yang sama. Kasih angka seed sebagai argumen ke default_rng.
rng = np.random.default_rng(42)
print(rng.integers(1, 100, size=5))
# selalu ngasilin urutan yang sama tiap dijalankan
Angka 42 di situ cuma label, bebas kamu ganti. Yang penting, selama seed-nya sama, urutan angkanya sama. Tanpa seed, tiap run ngasih hasil beda, yang bikin susah dibandingin. Buat eksperimen di kerja tim, selalu pakai seed biar rekan bisa nyocokin angkamu.
Apa saja fungsi random yang penting?
Ada beberapa method yang nutup mayoritas kebutuhan. Ini yang paling sering kepakai buat simulasi dan data dummy sehari-hari.
| Method | Gunanya |
|---|---|
| rng.integers(a, b) | Bilangan bulat acak dari a sampai b-1 |
| rng.random(n) | Desimal acak antara 0 dan 1 |
| rng.normal(mean, std) | Sampel dari distribusi normal |
| rng.choice(arr) | Ambil elemen acak dari array |
| rng.shuffle(arr) | Acak urutan elemen di tempat |
Buat data yang mirip fenomena nyata kayak tinggi badan atau berat produk, pakai rng.normal biar sebarannya realistis, bukan rata datar.
Gimana cara ambil sampel acak dari data?
Pakai rng.choice buat milih elemen acak dari array yang ada. Kamu bisa atur berapa banyak, boleh berulang atau tidak, bahkan kasih bobot biar sebagian nilai lebih sering kepilih. Ini berguna buat simulasi pilihan pelanggan.
produk = np.array(['Beras', 'Minyak', 'Gula', 'Telur'])
# 5 order acak, boleh berulang
print(rng.choice(produk, size=5))
# dengan bobot: Beras lebih laku
bobot = [0.5, 0.2, 0.2, 0.1]
print(rng.choice(produk, size=5, p=bobot))
Argumen p ngatur peluang tiap elemen. Total bobotnya harus 1. Di contoh ini Beras kepilih separuh waktu, mirip pola belanja yang gak merata.
Contoh kasus: generate data dummy toko_berkah
Sebelum data transaksi asli siap, tim toko_berkah butuh data uji buat nyoba dashboard. Aku generate 42.000 baris transaksi dummy pakai NumPy random. Dari dataset ngulikdata, proses bikinnya cuma makan 0,05 detik, jauh lebih cepat dari ngetik manual atau pakai loop Python.
import numpy as np
rng = np.random.default_rng(2026)
n = 42000
data = {
'produk': rng.choice(['Beras', 'Minyak', 'Gula'], size=n),
'qty': rng.integers(1, 20, size=n),
'harga': rng.normal(25000, 5000, size=n).round(-2),
}
print(data['qty'][:5])
print(data['harga'][:5])
Karena seed-nya 2026, tiap anggota tim yang jalanin kode ini dapat data persis sama. Jadi kalau ada yang nemu bug, yang lain bisa reproduksi tanpa ribet. Buat ngubah bentuk array hasilnya, cek NumPy reshape.
Kesalahan umum saat pakai NumPy random
Kesalahan pertama: masih pakai np.random.seed dan np.random.rand gaya lama. Cara itu masih jalan tapi udah gak disarankan. Pindah ke default_rng biar hasilnya lebih andal dan kodenya sesuai standar sekarang.
Kesalahan kedua: ngira batas atas integers itu inklusif. rng.integers(1, 7) gak pernah ngasilin 7. Kalau kamu mau sampai 7, tulis rng.integers(1, 8).
Kesalahan ketiga: lupa seed waktu bikin data buat eksperimen. Tanpa seed, hasil kamu gak bisa diulang, dan orang lain gak akan dapat angka yang sama. Selalu kasih seed buat kerjaan yang perlu diverifikasi. Buat operasi bersyarat di hasil acak, gabungin sama np.where.
FAQ
Apa beda default_rng dan np.random.rand?
np.random.rand bagian dari API lama yang pakai state acak global bersama. default_rng bikin generator sendiri yang terpisah, lebih cepat, dan lebih aman dipakai di banyak bagian kode. NumPy sekarang nyaranin default_rng buat semua kode baru. Fungsi lama masih jalan cuma buat kompatibilitas, bukan pilihan utama.
Apakah angka NumPy random beneran acak?
Enggak sepenuhnya, dan itu justru bagus. Angkanya pseudo-acak, ditentuin rumus dari satu seed awal. Keliatan acak buat kebanyakan keperluan, tapi bisa diulang persis kalau seed-nya sama. Buat kriptografi kamu butuh acak yang lebih kuat, tapi buat simulasi dan data uji, pseudo-acak udah cukup.
Gimana cara bikin hasil acak yang sama tiap run?
Kasih angka seed ke default_rng, misalnya np.random.default_rng(42). Selama seed-nya sama, urutan angka yang keluar bakal identik tiap kali kode dijalankan. Ini kunci reproducibility. Kalau kamu mau hasil beda tiap run, jangan kasih seed, biar NumPy ambil sumber acak dari sistem.
Bisa gak NumPy random buat distribusi selain normal?
Bisa banget. Generator punya banyak method distribusi, kayak uniform buat sebaran rata, poisson buat jumlah kejadian, binomial buat percobaan sukses gagal, dan exponential buat waktu tunggu. Pilih yang paling cocok sama fenomena yang mau kamu tiru biar simulasinya realistis.
Berapa cepat NumPy random dibanding loop Python?
Jauh lebih cepat buat data besar. NumPy ngasilin seluruh array sekaligus di level C, bukan satu angka per iterasi. Di contoh toko_berkah, 42.000 baris kelar dalam 0,05 detik. Pakai loop Python biasa buat jumlah yang sama bisa makan waktu berkali lipat lebih lama.
Penutup
Yang perlu kamu bawa dari sini:
- Pakai np.random.default_rng() buat bikin generator, bukan fungsi lawas.
- Kasih seed biar hasil acak bisa diulang sama persis.
- rng.choice dengan bobot bikin simulasi lebih mirip pola nyata.
Mau mahir olah array dan simulasi data? Belajar Python analis data dari dasar di Ngulik Data. Lanjut juga ke dasar NumPy array biar fondasinya kuat. Dokumentasi resmi tiap fungsi ada di halaman NumPy random.
Mau praktek langsung? Mulai latihan SQL gratis
Latihan interaktif, langsung di browser.
Artikel terkait
Uji Chi-Square: Konsep dan Contoh Praktis (2026)
Mau tau apakah metode bayar berhubungan sama tipe pelanggan? Uji chi-square jawabannya. Ini konsep, rumus, cara hitung di Python, plus contoh data toko nyata.
Korelasi Spearman: Kapan Dipakai vs Pearson
Korelasi Spearman kerja di peringkat, bukan nilai asli. Ini bedanya dengan Pearson, kapan pakai yang mana, dan cara hitungnya di Excel dan Python.
Korelasi Pearson: Cara Menghitung dan Membaca
Korelasi Pearson ngukur seberapa kuat dua angka bergerak bareng. Ini cara hitung dan baca nilainya dengan contoh dataset toko Indonesia.