Seberapa acak itu acak? . Setiap kali Anda membuat data, string, atau angka acak dengan Python, ada baiknya setidaknya memiliki gambaran kasar tentang bagaimana data itu dihasilkan Show
Di sini, Anda akan membahas beberapa opsi berbeda untuk menghasilkan data acak dengan Python, dan kemudian membuat perbandingan masing-masing dalam hal tingkat keamanan, keserbagunaan, tujuan, dan kecepatannya. Saya berjanji bahwa tutorial ini tidak akan menjadi pelajaran dalam matematika atau kriptografi, yang saya tidak akan siap untuk mengajar di tempat pertama. Anda akan mempelajari matematika sebanyak yang diperlukan, dan tidak lebih Seberapa Acak Itu Acak?Pertama, penafian yang menonjol diperlukan. Sebagian besar data acak yang dihasilkan dengan Python tidak sepenuhnya acak dalam pengertian ilmiah dari kata tersebut. Sebaliknya, itu adalah pseudorandom. dihasilkan dengan pseudorandom number generator (PRNG), yang pada dasarnya adalah algoritma apa pun untuk menghasilkan data yang tampaknya acak tetapi masih dapat direproduksi Angka acak “benar” dapat dihasilkan oleh, Anda dapat menebaknya, generator angka acak sejati (TRNG). Salah satu contohnya adalah berulang kali mengambil dadu dari lantai, melemparkannya ke udara, dan membiarkannya mendarat dengan cara yang mungkin. Dengan asumsi bahwa lemparan Anda tidak memihak, Anda benar-benar tidak tahu di angka berapa dadu akan mendarat. Memutar dadu adalah bentuk kasar penggunaan perangkat keras untuk menghasilkan angka yang tidak deterministik sama sekali. (Atau, Anda dapat meminta dadu-o-matic melakukan ini untuk Anda. ) TRNG berada di luar cakupan artikel ini tetapi tetap layak disebutkan demi perbandingan PRNG, biasanya dilakukan dengan perangkat lunak daripada perangkat keras, bekerja sedikit berbeda. Berikut deskripsi singkatnya
Anda kemungkinan besar telah diberitahu untuk “membaca dokumen. " dalam beberapa kasus. Yah, orang-orang itu tidak salah. Inilah cuplikan penting dari dokumentasi modul 2 yang tidak ingin Anda lewatkan
Anda mungkin pernah melihat 3, 4, atau sejenisnya, dengan Python. Pemanggilan fungsi ini menyemai generator bilangan acak dasar yang digunakan oleh modul 2 Python. Inilah yang membuat panggilan selanjutnya untuk menghasilkan angka acak yang deterministik. input A selalu menghasilkan output B. Berkat ini juga bisa menjadi kutukan jika digunakan dengan jahatMungkin istilah "acak" dan "deterministik" sepertinya tidak bisa berdampingan satu sama lain. Untuk membuatnya lebih jelas, inilah versi 6 yang sangat dipangkas yang secara iteratif membuat nomor "acak" dengan menggunakan 7. 8 awalnya didefinisikan sebagai nilai benih dan kemudian berubah menjadi urutan angka deterministik berdasarkan benih itu
Jangan menganggap contoh ini terlalu harfiah, karena ini dimaksudkan terutama untuk mengilustrasikan konsepnya. Jika Anda menggunakan nilai seed 1234, urutan panggilan berikutnya ke 6 harus selalu identik>>> _Anda akan segera melihat ilustrasi yang lebih serius tentang ini Hilangkan iklanApa Itu “Aman Secara Kriptografis?”Jika Anda belum muak dengan akronim "RNG", mari kita masukkan satu lagi ke dalam campuran. CSPRNG, atau PRNG yang aman secara kriptografis. CSPRNG cocok untuk menghasilkan data sensitif seperti kata sandi, autentikator, dan token. Diberi string acak, secara realistis tidak ada cara bagi Malicious Joe untuk menentukan string apa yang muncul sebelum atau sesudah string itu dalam urutan string acak Satu istilah lain yang mungkin Anda lihat adalah entropi. Singkatnya, ini mengacu pada jumlah keacakan yang diperkenalkan atau diinginkan. Misalnya, satu Python yang akan Anda bahas di sini mendefinisikan 0, jumlah byte yang dikembalikan secara default. Pengembang menganggap ini sebagai byte yang "cukup" untuk menjadi jumlah kebisingan yang cukupCatatan. Melalui tutorial ini, saya berasumsi bahwa satu byte mengacu pada 8 bit, seperti yang terjadi sejak tahun 1960-an, daripada unit penyimpanan data lainnya. Anda bebas menyebutnya oktet jika Anda mau Poin kunci tentang CSPRNG adalah bahwa mereka masih pseudorandom. Mereka direkayasa dengan cara yang deterministik secara internal, tetapi mereka menambahkan beberapa variabel lain atau memiliki beberapa properti yang membuat mereka "cukup acak" untuk melarang dukungan ke fungsi apa pun yang memaksakan determinisme Apa yang Akan Anda Bahas Di SiniSecara praktis, ini berarti Anda harus menggunakan PRNG biasa untuk pemodelan statistik, simulasi, dan membuat data acak dapat direproduksi. Mereka juga jauh lebih cepat daripada CSPRNG, seperti yang akan Anda lihat nanti. Gunakan CSPRNG untuk aplikasi keamanan dan kriptografi di mana sensitivitas data sangat penting Selain memperluas kasus penggunaan di atas, dalam tutorial ini, Anda akan mempelajari alat Python untuk menggunakan PRNG dan CSPRNG
Anda akan menyentuh semua hal di atas dan menyelesaikannya dengan perbandingan tingkat tinggi PRNG dengan PythonModul >>> random.seed(444) >>> random.random() 0.3088946587429545 >>> random.random() 0.01323751590501987 >>> random.seed(444) # Re-seed >>> random.random() 0.3088946587429545 >>> random.random() 0.01323751590501987 2Mungkin alat yang paling banyak dikenal untuk menghasilkan data acak dengan Python adalah modul 2, yang menggunakan algoritma Mersenne Twister PRNG sebagai generator intinyaSebelumnya, Anda menyentuh sebentar _8, dan sekarang adalah saat yang tepat untuk melihat cara kerjanya. Pertama, mari buat beberapa data acak tanpa penyemaian. Fungsi _9 mengembalikan float acak dalam interval [0. 0, 1. 0). Hasilnya akan selalu kurang dari endpoint kanan (1. 0). Ini juga dikenal sebagai rentang semi-terbuka>>> _Jika Anda menjalankan kode ini sendiri, saya berani bertaruh tabungan hidup saya bahwa angka yang dikembalikan pada mesin Anda akan berbeda. Saat Anda tidak menyemai generator adalah menggunakan waktu sistem Anda saat ini atau "sumber acak" dari OS Anda jika tersedia Dengan _8, Anda dapat membuat hasil yang dapat direproduksi, dan rangkaian panggilan setelah 8 akan menghasilkan jejak data yang sama>>> ________0______ Perhatikan pengulangan angka "acak". Urutan bilangan acak menjadi deterministik, atau sepenuhnya ditentukan oleh nilai seed, 444 Mari kita lihat beberapa fungsi yang lebih mendasar dari 2. Di atas, Anda membuat pelampung acak. Anda dapat menghasilkan bilangan bulat acak antara dua titik akhir dengan Python dengan fungsi 3. Ini mencakup interval [x, y] penuh dan dapat menyertakan kedua titik akhir>>> _Dengan _4, Anda dapat mengecualikan sisi kanan interval, artinya angka yang dihasilkan selalu terletak di dalam [x, y) dan akan selalu lebih kecil dari titik akhir kanan>>> _Jika Anda perlu membuat float acak yang berada dalam interval [x, y] tertentu, Anda dapat menggunakan 5, yang diambil dari distribusi seragam kontinu>>> _Untuk memilih elemen acak dari urutan yang tidak kosong (seperti daftar atau tupel), Anda dapat menggunakan 6. Ada juga _7 untuk memilih beberapa elemen dari urutan dengan penggantian (duplikat dimungkinkan)
Untuk meniru pengambilan sampel tanpa penggantian, gunakan 8>>> _Anda dapat mengacak urutan di tempat menggunakan 9. Ini akan memodifikasi objek urutan dan mengacak urutan elemen>>> _Jika Anda memilih untuk tidak memutasikan daftar asli, Anda harus membuat salinannya terlebih dahulu, lalu mengocok salinannya. Anda dapat membuat salinan daftar Python dengan modul 0, atau hanya 1 atau 2, di mana 8 adalah daftarnyaSebelum melanjutkan untuk menghasilkan data acak dengan NumPy, mari kita lihat satu lagi aplikasi yang sedikit terlibat. menghasilkan urutan string acak unik dengan panjang seragam Ini dapat membantu untuk memikirkan tentang desain fungsi terlebih dahulu. Anda harus memilih dari "kumpulan" karakter seperti huruf, angka, dan/atau tanda baca, menggabungkannya menjadi satu string, lalu memeriksa apakah string ini belum dibuat. Python _4 bekerja dengan baik untuk jenis pengujian keanggotaan ini _0 5 menggabungkan huruf-huruf dari 7 menjadi satu Python 7 dengan panjang 8. Token ini ditambahkan ke set, yang tidak dapat berisi duplikat, dan loop 9 dijalankan hingga set memiliki jumlah elemen yang Anda tentukanSumber. Modul 0 Python berisi sejumlah konstanta yang berguna. 1, 2, 3, 4, dan beberapa lainnyaMari kita coba fungsi ini >>> 1Untuk versi yang disempurnakan dari fungsi ini, jawaban Stack Overflow ini menggunakan fungsi generator, pengikatan nama, dan beberapa trik lanjutan lainnya untuk membuat versi 5 yang lebih cepat dan aman secara kriptografis di atasHilangkan iklanPRNG untuk Array. >>> random.randint(0, 10) 7 >>> random.randint(500, 50000) 18601 _2Satu hal yang mungkin Anda perhatikan adalah bahwa sebagian besar fungsi dari 2 mengembalikan nilai skalar (satu 8, 9, atau objek lain). Jika Anda ingin menghasilkan urutan angka acak, salah satu cara untuk mencapainya adalah dengan pemahaman daftar Python>>> 2Tetapi ada opsi lain yang dirancang khusus untuk ini. Anda dapat menganggap paket 2 NumPy sendiri seperti 2 perpustakaan standar, tetapi untuk array NumPy. (Itu juga dilengkapi dengan kemampuan untuk menggambar dari lebih banyak distribusi statistik. )Perhatikan bahwa _2 menggunakan PRNG sendiri yang terpisah dari 2 lama. Anda tidak akan menghasilkan array NumPy acak deterministik dengan panggilan ke 8 Python sendiri>>> 3Tanpa basa-basi lagi, berikut adalah beberapa contoh untuk membangkitkan selera Anda >>> 4Dalam sintaks untuk _5, parameter 6 bersifat opsional dan menunjukkan bentuk objek akhir. Di sini, _7 membuat array 2d dengan 3 baris dan 4 kolom. Data akan menjadi i. i. d. , artinya setiap titik data diambil secara independen dari yang lainOperasi umum lainnya adalah membuat urutan nilai Boolean acak, 8 atau 9. Salah satu cara untuk melakukannya adalah dengan 0. Namun, ini sebenarnya sekitar 4x lebih cepat untuk memilih dari 1 dan kemudian menampilkan bilangan bulat ini ke nilai Boolean yang sesuai>>> 5Bagaimana dengan menghasilkan data yang berkorelasi? . Salah satu cara untuk melakukannya adalah dengan fungsi NumPy, yang memperhitungkan matriks kovarians. Dengan kata lain, untuk menggambar dari satu variabel acak yang terdistribusi normal, Anda perlu menentukan rata-rata dan variansnya (atau standar deviasi) Untuk sampel dari distribusi normal multivariat, Anda menentukan rata-rata dan matriks kovarians, dan Anda berakhir dengan beberapa rangkaian data berkorelasi yang masing-masing kira-kira terdistribusi secara normal Namun, daripada kovarians, korelasi adalah ukuran yang lebih familiar dan intuitif bagi sebagian besar orang. Ini adalah kovarians yang dinormalisasi oleh produk standar deviasi, sehingga Anda juga dapat menentukan kovarians dalam hal korelasi dan standar deviasi Jadi, bisakah Anda mengambil sampel acak dari distribusi normal multivariat dengan menentukan matriks korelasi dan standar deviasi? . Di sini, S adalah vektor standar deviasi, P adalah matriks korelasinya, dan C adalah matriks kovarians (kuadrat) yang dihasilkan Ini dapat dinyatakan dalam NumPy sebagai berikut _6Sekarang, Anda dapat membuat dua deret waktu yang berkorelasi tetapi tetap acak >>> 7Anda dapat menganggap 3 sebagai 500 pasang titik data yang berkorelasi terbalik. Inilah pemeriksaan kewarasan yang dapat Anda kembalikan ke input asli, yang kira-kira 4, 5, dan 6 dari atas>>> 8Sebelum kita beralih ke CSPRNG, mungkin berguna untuk meringkas beberapa fungsi 2 dan rekanan 2 merekaPython 2 ModuleNumPy CounterpartUse 6Float acak di [0. 0, 1. 0) 02Random integer in [a, b] 04Random integer in [a, b) 06Random float in [a, b] 08Random element from 10 11Random 8 elements from 10 with replacement 15 with 17Random 8 elements from 10 without replacement 20Shuffle the sequence 8 in place 23 or Catatan. NumPy khusus untuk membangun dan memanipulasi array multidimensi yang besar. Jika Anda hanya membutuhkan satu nilai, 2 sudah cukup dan mungkin akan lebih cepat juga. Untuk urutan kecil, 2 bahkan mungkin lebih cepat juga, karena NumPy hadir dengan beberapa overheadSekarang setelah Anda membahas dua opsi mendasar untuk PRNG, mari beralih ke beberapa adaptasi yang lebih aman Hilangkan iklanCSPRNG dengan Python>>> seed(1234) >>> [random() for _ in range(10)] [16, 10, 11, 14, 4, 12, 17, 13, 1, 3] >>> seed(1234) >>> [random() for _ in range(10)] [16, 10, 11, 14, 4, 12, 17, 13, 1, 3] _30. Tentang Acak yang MendapatFungsi Python digunakan oleh keduanya dan (keduanya akan Anda lihat di sini sebentar lagi). Tanpa membahas terlalu banyak detail, _30 menghasilkan byte acak yang bergantung pada sistem operasi yang dapat dengan aman disebut aman secara kriptografis
Dengan _30, tidak ada konsep penyemaian secara manual. Meskipun secara teknis masih pseudorandom, fungsi ini lebih selaras dengan cara kita berpikir tentang keacakan. Satu-satunya argumen adalah jumlah yang akan dikembalikan>>> 9Sebelum kita melangkah lebih jauh, ini mungkin saat yang tepat untuk mempelajari pelajaran mini tentang pengkodean karakter. Banyak orang, termasuk saya, memiliki beberapa jenis reaksi alergi ketika mereka melihat 38 objek dan garis panjang 39 karakter. Namun, sangat berguna untuk mengetahui bagaimana urutan seperti 8 di atas akhirnya diubah menjadi string atau angka _30 mengembalikan urutan byte tunggal>>> 0Tapi bagaimana ini akhirnya berubah menjadi Python 7 atau urutan angka?Pertama, ingat salah satu konsep dasar komputasi, yaitu satu byte terdiri dari 8 bit. Anda dapat menganggap bit sebagai satu digit yang bernilai 0 atau 1. Sebuah byte secara efektif memilih antara 0 dan 1 delapan kali, sehingga 43 dan 44 dapat mewakili byte. Coba ini, yang menggunakan f-string Python yang diperkenalkan di Python 3. 6, dalam juru bahasa Anda>>> 1Ini setara dengan _45, dengan beberapa pemformatan khusus. mengubah bilangan bulat menjadi representasi binernya sebagai stringDi mana itu meninggalkan kita? . (Tidak ada permainan kata-kata yang dimaksudkan. ) Mengingat bahwa kita diperbolehkan 8 bit, masing-masing dengan 2 pilihan, ada 48 kemungkinan byte “kombinasi. ”Ini berarti bahwa setiap byte memetakan ke bilangan bulat antara 0 dan 255. Dengan kata lain, kita membutuhkan lebih dari 8 bit untuk menyatakan bilangan bulat 256. Anda dapat memverifikasi ini dengan memeriksa bahwa _49 sekarang adalah 9, bukan 8Oke, sekarang mari kita kembali ke tipe data _38 yang Anda lihat di atas, dengan membuat urutan byte yang sesuai dengan bilangan bulat 0 hingga 255>>> 2Jika Anda memanggil _51, Anda akan kembali ke daftar Python yang berjalan dari 0 hingga 255. Tetapi jika Anda hanya mencetak _52, Anda mendapatkan urutan yang tampak jelek dengan garis miring terbalik>>> 3Garis miring terbalik ini adalah escape sequence, dan 53 karakter dengan nilai hex 54. Beberapa elemen 52 ditampilkan secara harfiah (karakter yang dapat dicetak seperti huruf, angka, dan tanda baca). Sebagian besar diekspresikan dengan pelarian. _56 mewakili backspace keyboard, sementara 57 adalah carriage return (bagian dari baris baru, pada sistem Windows)Jika Anda memerlukan penyegaran pada heksadesimal, Kode Charles Petzold. Bahasa Tersembunyi adalah tempat yang tepat untuk itu. Hex adalah sistem penomoran berbasis 16 yang, alih-alih menggunakan 0 hingga 9, menggunakan 0 hingga 9 dan a hingga f sebagai digit dasarnya. Terakhir, mari kembali ke awal, dengan urutan byte acak 8. Semoga ini sedikit lebih masuk akal sekarang. Memanggil _59 pada objek 38 memberikan 7 angka heksadesimal, dengan masing-masing terkait dengan angka desimal dari 0 hingga 255>>> 4Satu pertanyaan terakhir. bagaimana _62 12 karakter di atas, padahal 8 hanya 6 byte? . Versi _7 dari 38 akan selalu dua kali lebih panjang sejauh mata kita memperhatikanBahkan jika byte (seperti _66) tidak memerlukan 8 bit penuh untuk direpresentasikan, 62 akan selalu menggunakan dua digit hex per byte, sehingga angka 1 akan direpresentasikan sebagai 68 bukan hanya 69. Secara matematis, keduanya memiliki ukuran yang samaDetil Teknis. Apa yang terutama Anda bedah di sini adalah bagaimana objek 38 menjadi Python 7. Salah satu teknis lainnya adalah bagaimana 38 diproduksi oleh 30 dikonversi menjadi 9 dalam interval [0. 0, 1. 0), seperti pada _9. Jika Anda tertarik untuk mempelajarinya lebih lanjut, cuplikan kode ini menunjukkan bagaimana 76 membuat konversi awal menjadi bilangan bulat, menggunakan sistem penomoran basis-256Dengan itu di bawah ikat pinggang Anda, mari kita sentuh modul yang baru diperkenalkan, 4, yang membuat pembuatan token aman jauh lebih ramah penggunaHilangkan iklanPenyimpanan Terbaik Python >>> random.randint(0, 10) 7 >>> random.randint(500, 50000) 18601 4Diperkenalkan dengan Python 3. 6 oleh salah satu PEP yang lebih berwarna di luar sana, modul 4 dimaksudkan untuk menjadi modul Python de facto untuk menghasilkan byte dan string acak yang aman secara kriptografisAnda dapat melihat kode sumber untuk modul tersebut, yang pendek dan manis dengan sekitar 25 baris kode. _4 pada dasarnya adalah pembungkus sekitar 30. Itu hanya mengekspor beberapa fungsi untuk menghasilkan angka, byte, dan string acak. Sebagian besar contoh ini harus cukup jelas>>> 5Sekarang, bagaimana dengan contoh konkret? . com atau bit. ly yang mengubah URL yang berat menjadi sesuatu seperti https. //sedikit. ly/2IcCp9u. Kebanyakan shortener tidak melakukan hashing yang rumit dari input ke output; Katakanlah setelah melihat Root Zone Database, Anda telah mendaftarkan situs tersebut. ly. Inilah fungsi untuk membantu Anda memulai dengan layanan Anda 6Apakah ini ilustrasi nyata yang lengkap? . Saya akan bertaruh sedikit. ly melakukan hal-hal dengan cara yang sedikit lebih canggih daripada menyimpan tambang emasnya di kamus Python global yang tidak persisten di antara sesi Catatan. Jika Anda ingin membuat pemendek URL lengkap milik Anda sendiri, periksa Buat Pemendek URL Dengan FastAPI dan Python Namun, ini kira-kira akurat secara konseptual >>> ________20______7 Tunggu. Satu hal yang mungkin Anda perhatikan adalah bahwa kedua hasil ini memiliki panjang 7 saat Anda meminta 5 byte. Tunggu, saya pikir Anda mengatakan hasilnya akan dua kali lebih lama? . Ada satu hal lagi yang terjadi di sini. _82 menggunakan pengkodean base64, di mana setiap karakter adalah 6 bit data. (Ini 0 hingga 63, dan karakter yang sesuai. Karakternya adalah A-Z, a-z, 0-9, dan +/. )Jika Anda awalnya menentukan sejumlah byte 83, panjang yang dihasilkan dari 84 akan menjadi 85, yang dapat Anda buktikan dan selidiki lebih lanjut jika Anda penasaranIntinya di sini adalah bahwa, sementara 4 sebenarnya hanyalah pembungkus dari fungsi Python yang ada, ini bisa menjadi pilihan Anda saat keamanan menjadi perhatian utama AndaSatu Kandidat Terakhir. >>> random.randint(0, 10) 7 >>> random.randint(500, 50000) 18601 _5Satu opsi terakhir untuk menghasilkan token acak adalah fungsi 88 dari modul 5 Python. UUID adalah Pengidentifikasi Unik Universal, urutan 128-bit ( 7 dengan panjang 32) yang dirancang untuk “menjamin keunikan melintasi ruang dan waktu. ” _88 adalah salah satu fungsi modul yang paling berguna, dan fungsi ini>>> ________20______8 Hal yang menyenangkan adalah bahwa semua fungsi _5 menghasilkan turunan dari kelas 94, yang merangkum ID dan memiliki properti seperti 95, 96, dan 97>>> ________20______9 Anda mungkin juga telah melihat beberapa variasi lainnya. _98, 99, dan 00. Perbedaan utama antara ini dan _88 adalah bahwa ketiga fungsi tersebut semuanya mengambil beberapa bentuk input dan oleh karena itu tidak memenuhi definisi "acak" sejauh yang dilakukan UUID Versi 4
_88, sebaliknya, sepenuhnya pseudorandom (atau acak). Ini terdiri dari mendapatkan 16 byte melalui 30, mengubahnya menjadi integer big-endian, dan melakukan sejumlah operasi bitwise untuk mematuhiMudah-mudahan, sekarang Anda sudah memiliki gagasan bagus tentang perbedaan antara berbagai “jenis” data acak dan cara membuatnya. Namun, satu masalah lain yang mungkin terlintas dalam pikiran adalah tabrakan Dalam hal ini, tabrakan hanya merujuk pada pembuatan dua UUID yang cocok. Apa peluangnya? . ada _07 atau 340 undecillion kemungkinan 08 nilai. Jadi, saya serahkan kepada Anda untuk menilai apakah ini cukup sebagai jaminan untuk tidur nyenyakSalah satu penggunaan umum dari 5 adalah di Django, yang memiliki a yang sering digunakan sebagai kunci utama dalam basis data relasional yang mendasari modelHilangkan iklanMengapa Tidak Hanya “Default to” ________20______11?Selain modul aman yang dibahas di sini seperti 4, modul 2 Python sebenarnya memiliki kelas yang jarang digunakan bernama yang menggunakan 30. ( _11, pada gilirannya, juga digunakan oleh 4. Itu semua adalah sedikit web yang menelusuri kembali ke 18. )Pada titik ini, Anda mungkin bertanya pada diri sendiri mengapa Anda tidak "default ke" versi ini saja? Saya sudah menyebutkan satu alasan. terkadang Anda ingin data Anda deterministik dan dapat direproduksi untuk diikuti orang lain Tetapi alasan kedua adalah bahwa CSPRNG, setidaknya dengan Python, cenderung jauh lebih lambat daripada PRNG. Mari kita uji dengan skrip, 20, yang membandingkan versi PRNG dan CSPRNG dari 05 menggunakan 22 Python 0Sekarang untuk menjalankan ini dari shell _1Perbedaan waktu 5x tentunya menjadi pertimbangan yang valid selain keamanan kriptografi saat memilih di antara keduanya Barang sisa. HashingSalah satu konsep yang belum mendapat banyak perhatian dalam tutorial ini adalah hashing, yang dapat dilakukan dengan modul 23 PythonHash dirancang untuk menjadi pemetaan satu arah dari nilai input ke string ukuran tetap yang hampir tidak mungkin direkayasa balik. Dengan demikian, sementara hasil dari fungsi hash mungkin "terlihat seperti" data acak, itu tidak benar-benar memenuhi syarat di bawah definisi di sini RekapAnda telah membahas banyak hal dalam tutorial ini. Sebagai rangkuman, berikut adalah perbandingan tingkat tinggi dari opsi yang tersedia bagi Anda untuk merekayasa keacakan dengan Python Package/ModuleDescriptionCryptographically Secure 2Fasty & easy random data using Mersenne TwisterNo 2Like 2 but for (possibly multidimensional) arraysNo 3Contains 18, the base of other functions covered hereYes 4Designed to be Python's de facto module for generating secure random numbers, bytes, and stringsYes 5Home to a handful of functions for Jangan ragu untuk meninggalkan beberapa komentar acak di bawah ini, dan terima kasih telah membaca Tautan Tambahan
Tandai sebagai Selesai Tonton Sekarang Tutorial ini memiliki kursus video terkait yang dibuat oleh tim Real Python. Tonton bersama dengan tutorial tertulis untuk memperdalam pemahaman Anda. Menghasilkan Data Acak dengan Python 🐍 Trik Python 💌 Dapatkan Trik Python singkat & manis yang dikirim ke kotak masuk Anda setiap beberapa hari. Tidak pernah ada spam. Berhenti berlangganan kapan saja. Dikuratori oleh tim Real Python Kirimi Saya Trik Python » Tentang Brad Solomon Brad adalah seorang insinyur perangkat lunak dan anggota Tim Tutorial Python Sejati » Lebih lanjut tentang BradSetiap tutorial di Real Python dibuat oleh tim pengembang sehingga memenuhi standar kualitas tinggi kami. Anggota tim yang mengerjakan tutorial ini adalah Adriana Geir Arne Joanna Master Keterampilan Python Dunia Nyata Dengan Akses Tanpa Batas ke Python Nyata Bergabunglah dengan kami dan dapatkan akses ke ribuan tutorial, kursus video langsung, dan komunitas pakar Pythonista Tingkatkan Keterampilan Python Anda » Guru Keterampilan Python Dunia Nyata Bergabunglah dengan kami dan dapatkan akses ke ribuan tutorial, kursus video langsung, dan komunitas ahli Pythonista Tingkatkan Keterampilan Python Anda » Bagaimana menurut anda? Nilai artikel ini Tweet Bagikan Bagikan EmailApa takeaway # 1 Anda atau hal favorit yang Anda pelajari? Kiat Berkomentar. Komentar yang paling berguna adalah yang ditulis dengan tujuan belajar dari atau membantu siswa lain. dan dapatkan jawaban atas pertanyaan umum di portal dukungan kami Bagaimana cara pengacakan bekerja di Python?Modul Python Random adalah modul bawaan Python yang digunakan untuk menghasilkan angka acak . Ini adalah angka pseudo-acak yang berarti ini tidak benar-benar acak. Modul ini dapat digunakan untuk melakukan tindakan acak seperti membuat angka acak, mencetak nilai acak untuk daftar atau string, dll.
Bagaimana Anda mengacak nomor dalam daftar Python?Dengan menggunakan acak. randint() kita dapat menambahkan angka acak ke dalam daftar. |