Cara mendapatkan elemen acak dari set dengan python

Dengan Python, Anda dapat mengambil sampel elemen secara acak dari daftar dengan

print(random.choice(('xxx', 'yyy', 'zzz')))
# yyy

print(random.choice('abcde'))
# b
6,
print(random.choice(('xxx', 'yyy', 'zzz')))
# yyy

print(random.choice('abcde'))
# b
7, dan
print(random.choice(('xxx', 'yyy', 'zzz')))
# yyy

print(random.choice('abcde'))
# b
8 dari modul
print(random.choice(('xxx', 'yyy', 'zzz')))
# yyy

print(random.choice('abcde'))
# b
9. Fungsi-fungsi ini juga dapat diterapkan pada string dan tuple

print(random.choice(('xxx', 'yyy', 'zzz')))
# yyy

print(random.choice('abcde'))
# b
6 mengembalikan satu elemen acak, dan
print(random.choice(('xxx', 'yyy', 'zzz')))
# yyy

print(random.choice('abcde'))
# b
7 dan
print(random.choice(('xxx', 'yyy', 'zzz')))
# yyy

print(random.choice('abcde'))
# b
8 mengembalikan daftar beberapa elemen acak.
print(random.choice(('xxx', 'yyy', 'zzz')))
# yyy

print(random.choice('abcde'))
# b
7 digunakan untuk pengambilan sampel acak tanpa penggantian, dan
print(random.choice(('xxx', 'yyy', 'zzz')))
# yyy

print(random.choice('abcde'))
# b
8 digunakan untuk pengambilan sampel acak dengan penggantian

  • acak — Menghasilkan angka pseudo-acak — Python 3. 8. 1 dokumentasi

Artikel ini menjelaskan konten berikut

  • Pilih elemen acak.
    # print(random.choice([]))
    # IndexError: Cannot choose from an empty sequence
    
    _5
  • Sampel acak tanpa penggantian.
    # print(random.choice([]))
    # IndexError: Cannot choose from an empty sequence
    
    _6
  • Sampel acak dengan penggantian.
    # print(random.choice([]))
    # IndexError: Cannot choose from an empty sequence
    
    _7
  • Inisialisasi generator nomor acak.
    # print(random.choice([]))
    # IndexError: Cannot choose from an empty sequence
    
    _8

Jika Anda ingin memilih elemen dari daftar berdasarkan ketentuan, lihat artikel berikut ini

  • Ekstrak, ganti, ubah elemen daftar dengan Python

Jika Anda ingin mengocok seluruh daftar, atau mendapatkan daftar angka acak, lihat artikel berikut

  • Kocok daftar, string, tuple dengan Python (acak. acak, sampel)
  • Hasilkan int/float acak dengan Python (acak, randrange, randint, dll. )

Tautan Bersponsor

Pilih elemen acak. # print(random.choice([])) # IndexError: Cannot choose from an empty sequence _5

# print(random.choice([]))
# IndexError: Cannot choose from an empty sequence
_5 mengembalikan elemen acak dari daftar

import random

l = [0, 1, 2, 3, 4]

print(random.choice(l))
# 1

sumber.

Tuple dan string diproses dengan cara yang sama. Dalam kasus string, satu karakter dikembalikan

print(random.choice(('xxx', 'yyy', 'zzz')))
# yyy

print(random.choice('abcde'))
# b

sumber.

Kesalahan dimunculkan jika daftar, tuple, atau string kosong

# print(random.choice([]))
# IndexError: Cannot choose from an empty sequence
_

sumber.

Sampel acak tanpa penggantian. # print(random.choice([])) # IndexError: Cannot choose from an empty sequence _6

# print(random.choice([]))
# IndexError: Cannot choose from an empty sequence
_6 sampel acak beberapa elemen dari daftar tanpa penggantian

Berikan daftar ke argumen pertama dan jumlah elemen yang ingin Anda dapatkan ke argumen kedua. Sebuah daftar dikembalikan

import random

l = [0, 1, 2, 3, 4]

print(random.sample(l, 3))
# [1, 3, 2]

print(type(random.sample(l, 3)))
# <class 'list'>

sumber.

Jika argumen kedua disetel ke

import random

l = [0, 1, 2, 3, 4]

print(random.sample(l, 3))
# [1, 3, 2]

print(type(random.sample(l, 3)))
# <class 'list'>
3, daftar dengan satu elemen dikembalikan. Jika disetel ke
import random

l = [0, 1, 2, 3, 4]

print(random.sample(l, 3))
# [1, 3, 2]

print(type(random.sample(l, 3)))
# <class 'list'>
_4, daftar kosong dikembalikan. Jika diatur ke nilai yang melebihi jumlah elemen daftar, kesalahan akan muncul

print(random.sample(l, 1))
# [0]

print(random.sample(l, 0))
# []

# print(random.sample(l, 10))
# ValueError: Sample larger than population or is negative

sumber.

Bahkan jika Anda meneruskan tupel atau string ke argumen pertama, daftar dikembalikan

print(random.sample(('xxx', 'yyy', 'zzz'), 2))
# ['xxx', 'yyy']

print(random.sample('abcde', 2))
# ['a', 'e']

sumber.

Untuk mengonversi daftar menjadi tuple atau string, gunakan

import random

l = [0, 1, 2, 3, 4]

print(random.sample(l, 3))
# [1, 3, 2]

print(type(random.sample(l, 3)))
# <class 'list'>
5,
import random

l = [0, 1, 2, 3, 4]

print(random.sample(l, 3))
# [1, 3, 2]

print(type(random.sample(l, 3)))
# <class 'list'>
6

  • Konversi daftar dan tupel satu sama lain dengan Python
  • Gabungkan string dengan Python (+ operator, gabung, dll. )

print(tuple(random.sample(('xxx', 'yyy', 'zzz'), 2)))
# ('yyy', 'xxx')

print(''.join(random.sample('abcde', 2)))
# de

sumber.

Perhatikan bahwa jika daftar atau tupel asli berisi elemen duplikat, nilai yang sama dapat dipilih

l_dup = [0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3]

print(random.sample(l_dup, 3))
# [3, 1, 1]

sumber.

Jika Anda ingin menghindari nilai duplikat, gunakan

import random

l = [0, 1, 2, 3, 4]

print(random.sample(l, 3))
# [1, 3, 2]

print(type(random.sample(l, 3)))
# <class 'list'>
7 untuk mengonversi daftar dan tupel menjadi
import random

l = [0, 1, 2, 3, 4]

print(random.sample(l, 3))
# [1, 3, 2]

print(type(random.sample(l, 3)))
# <class 'list'>
8, ekstrak hanya elemen unik, lalu gunakan
print(random.choice(('xxx', 'yyy', 'zzz')))
# yyy

print(random.choice('abcde'))
# b
7

  • Hapus/ekstrak elemen duplikat dari daftar dengan Python

print(set(l_dup))
# {0, 1, 2, 3}

print(random.sample(set(l_dup), 3))
# [1, 3, 2]

sumber.

Tautan Bersponsor

Sampel acak dengan penggantian. # print(random.choice([])) # IndexError: Cannot choose from an empty sequence _7

# print(random.choice([]))
# IndexError: Cannot choose from an empty sequence
_7 sampel acak beberapa elemen dari daftar dengan penggantian

# print(random.choice([]))
# IndexError: Cannot choose from an empty sequence
_7 ditambahkan di Python 3. 6 dan tidak dapat digunakan di versi sebelumnya

Tentukan jumlah elemen yang ingin Anda dapatkan dengan argumen

print(random.sample(l, 1))
# [0]

print(random.sample(l, 0))
# []

# print(random.sample(l, 10))
# ValueError: Sample larger than population or is negative
3. Karena elemen dipilih dengan penggantian,
print(random.sample(l, 1))
# [0]

print(random.sample(l, 0))
# []

# print(random.sample(l, 10))
# ValueError: Sample larger than population or is negative
3 bisa lebih besar dari jumlah elemen dalam daftar asli

Karena

print(random.sample(l, 1))
# [0]

print(random.sample(l, 0))
# []

# print(random.sample(l, 10))
# ValueError: Sample larger than population or is negative
_3 adalah argumen kata kunci saja, maka perlu untuk menentukan seperti
print(random.sample(l, 1))
# [0]

print(random.sample(l, 0))
# []

# print(random.sample(l, 10))
# ValueError: Sample larger than population or is negative
6

import random

l = [0, 1, 2, 3, 4]

print(random.choices(l, k=3))
# [2, 1, 0]

print(random.choices(l, k=10))
# [3, 4, 1, 4, 4, 2, 0, 4, 2, 0]

sumber.

print(random.sample(l, 1))
# [0]

print(random.sample(l, 0))
# []

# print(random.sample(l, 10))
# ValueError: Sample larger than population or is negative
_3 diatur ke
import random

l = [0, 1, 2, 3, 4]

print(random.sample(l, 3))
# [1, 3, 2]

print(type(random.sample(l, 3)))
# <class 'list'>
3 secara default. Jika dihilangkan, daftar dengan satu elemen dikembalikan

print(random.choice(('xxx', 'yyy', 'zzz')))
# yyy

print(random.choice('abcde'))
# b
0

sumber.

Anda dapat menentukan bobot (probabilitas) untuk setiap elemen ke argumen

print(random.sample(l, 1))
# [0]

print(random.sample(l, 0))
# []

# print(random.sample(l, 10))
# ValueError: Sample larger than population or is negative
9. Jenis elemen daftar yang ditentukan dalam
print(random.sample(l, 1))
# [0]

print(random.sample(l, 0))
# []

# print(random.sample(l, 10))
# ValueError: Sample larger than population or is negative
9 dapat berupa
print(random.sample(('xxx', 'yyy', 'zzz'), 2))
# ['xxx', 'yyy']

print(random.sample('abcde', 2))
# ['a', 'e']
1 atau
print(random.sample(('xxx', 'yyy', 'zzz'), 2))
# ['xxx', 'yyy']

print(random.sample('abcde', 2))
# ['a', 'e']
2. Jika diatur ke
import random

l = [0, 1, 2, 3, 4]

print(random.sample(l, 3))
# [1, 3, 2]

print(type(random.sample(l, 3)))
# <class 'list'>
_4, elemen tidak dipilih

print(random.choice(('xxx', 'yyy', 'zzz')))
# yyy

print(random.choice('abcde'))
# b
_1

sumber.

Bobot kumulatif dapat ditentukan dalam argumen

print(random.sample(('xxx', 'yyy', 'zzz'), 2))
# ['xxx', 'yyy']

print(random.sample('abcde', 2))
# ['a', 'e']
4.
print(random.sample(('xxx', 'yyy', 'zzz'), 2))
# ['xxx', 'yyy']

print(random.sample('abcde', 2))
# ['a', 'e']
4 dalam kode contoh berikut ini setara dengan
print(random.sample(l, 1))
# [0]

print(random.sample(l, 0))
# []

# print(random.sample(l, 10))
# ValueError: Sample larger than population or is negative
9 pertama dalam kode di atas

print(random.choice(('xxx', 'yyy', 'zzz')))
# yyy

print(random.choice('abcde'))
# b
_2

sumber.

Secara default,

print(random.sample(l, 1))
# [0]

print(random.sample(l, 0))
# []

# print(random.sample(l, 10))
# ValueError: Sample larger than population or is negative
_9 dan
print(random.sample(('xxx', 'yyy', 'zzz'), 2))
# ['xxx', 'yyy']

print(random.sample('abcde', 2))
# ['a', 'e']
4 diatur ke
print(random.sample(('xxx', 'yyy', 'zzz'), 2))
# ['xxx', 'yyy']

print(random.sample('abcde', 2))
# ['a', 'e']
9, dan setiap elemen dipilih dengan probabilitas yang sama

Jika panjang (jumlah elemen)

print(random.sample(l, 1))
# [0]

print(random.sample(l, 0))
# []

# print(random.sample(l, 10))
# ValueError: Sample larger than population or is negative
9 atau
print(random.sample(('xxx', 'yyy', 'zzz'), 2))
# ['xxx', 'yyy']

print(random.sample('abcde', 2))
# ['a', 'e']
4 berbeda dari daftar aslinya, kesalahan akan muncul

print(random.choice(('xxx', 'yyy', 'zzz')))
# yyy

print(random.choice('abcde'))
# b
_3

sumber.

Selain itu, kesalahan muncul jika Anda menentukan

print(random.sample(l, 1))
# [0]

print(random.sample(l, 0))
# []

# print(random.sample(l, 10))
# ValueError: Sample larger than population or is negative
9 dan
print(random.sample(('xxx', 'yyy', 'zzz'), 2))
# ['xxx', 'yyy']

print(random.sample('abcde', 2))
# ['a', 'e']
4 pada saat yang sama

print(random.choice(('xxx', 'yyy', 'zzz')))
# yyy

print(random.choice('abcde'))
# b
_4

sumber.

Dalam kode contoh sejauh ini, sebuah daftar ditentukan untuk argumen pertama, tetapi hal yang sama berlaku untuk sebuah tuple dan string

Bagaimana Anda memilih elemen secara acak dari set dengan Python?

Gunakan acak. sample() function saat Anda ingin memilih beberapa item acak dari daftar tanpa pengulangan atau duplikat. Ada perbedaan antara pilihan() dan pilihan(). Pilihan() telah ditambahkan di Python 3. 6 untuk memilih n elemen dari daftar secara acak, tetapi fungsi ini dapat mengulang item.

Bagaimana Anda mengembalikan elemen acak dari satu set?

Metode 1. Dengan mengonversi ke array. .
Pertama-tama ubah HashSet menjadi array dan kemudian akses elemen acak darinya
Kemudian kita akan membuat objek kelas Random dan akan memanggil metode nextInt() dari kelas tersebut yang akan memberi kita nomor acak yang kurang dari atau sama dengan ukuran HashSet

Bagaimana Anda mencetak nomor acak dari satu set dengan Python?

impor acak n = acak. acak() cetak(n)
impor acak n = acak. randint(0,22) cetak(n)
impor daftar acak acak = [] untuk i dalam rentang (0,5). n = acak. randint(1,30) daftar acak. .
impor acak #Hasilkan 5 angka acak antara 10 dan 30 daftar acak = acak. sampel(rentang(10, 30), 5) cetak(daftar acak)

Bagaimana Anda mengekstrak item acak dari daftar dengan Python?

Dengan Python, Anda dapat mengambil sampel elemen secara acak dari daftar dengan choice() , sample() , dan choice() dari modul acak. These functions can also be applied to a string and tuple. choice() returns one random element, and sample() and choices() return a list of multiple random elements.