Menjana perpuluhan rawak dan integer dalam Python, termasuk rawak(), randrange(), dan randint()

Perniagaan

Nombor rawak boleh dijana menggunakan fungsi rawak(), seragam(), randange(), dan randit() dalam modul rawak perpustakaan standard Python.

Modul rawak disertakan dalam perpustakaan standard, jadi tiada pemasangan tambahan diperlukan. Sudah tentu, anda perlu mengimportnya.

Maklumat berikut disediakan di sini.

  • random.random()(Nombor titik terapung antara 0.0 dan 1.0)
  • random.uniform()(Sebarang julat nombor titik terapung)
  • Hasilkan nombor rawak yang mengikut taburan normal, taburan Gaussian, dsb.
  • random.randrange()(Integer julat dan langkah arbitrari)
  • random.randint()(Integer dalam mana-mana julat)
  • Menjana senarai dengan nombor rawak sebagai elemen
    • Senarai nombor terapung rawak
    • Senarai nombor rawak integer
  • Mulakan penjana nombor rawak (tetapkan benih nombor rawak)

Lihat artikel berikut tentang cara mengekstrak atau mengisih elemen senarai secara rawak.

random.random()(Nombor titik terapung antara 0.0 dan 1.0)

Fungsi rawak modul rawak () menjana nombor terapung-titik terapung rawak jenis apungan yang antara 0.0 dan 1.0.

import random

print(random.random())
# 0.4496839011176701

random.uniform()(Sebarang julat nombor titik terapung)

uniform(a, b)Fungsi modul rawak ini menjana nombor rawak jenis apungan nombor titik terapung dalam mana-mana julat berikut

  • a <= n <= b
  • b <= n <= a
import random

print(random.uniform(100, 200))
# 175.26585048238275

Kedua-dua hujah boleh sama ada lebih besar atau lebih kecil; jika mereka sama, mereka secara semula jadi hanya akan mengembalikan nilai itu. Nilai pulangan sentiasa terapung.

print(random.uniform(100, -100))
# -27.82338731501028

print(random.uniform(100, 100))
# 100.0

Hujah juga boleh ditentukan sebagai apungan.

print(random.uniform(1.234, 5.637))
# 2.606743596829249

Sama ada nilai b disertakan dalam julat bergantung pada pembundaran berikut, seperti yang didokumenkan.
a + (b-a) * random.random()

Sama ada nilai titik akhir b berada dalam julat atau tidak bergantung pada pembundaran titik terapung dalam persamaan berikut
a + (b-a) * random()
random.uniform() — Generate pseudo-random numbers — Python 3.10.2 Documentation

Hasilkan nombor rawak yang mengikut taburan normal, taburan Gaussian, dsb.

Fungsi rawak() dan seragam() di atas menjana nombor rawak teragih seragam, tetapi terdapat juga fungsi untuk menjana nombor titik terapung yang mengikuti pengedaran berikut.

  • pengedaran beta:random.betavariate()
  • taburan eksponen:random.expovariate()
  • taburan gamma:random.gammavariate()
  • Taburan Gaussian:random.gauss()
  • taburan lognormal:random.lognormvariate()
  • taburan normal:random.normalvariate()
  • Pengedaran Von Mises:random.vonmisesvariate()
  • Pengagihan pareto:random.paretovariate()
  • Pengedaran Weibull:random.weibullvariate()

Parameter setiap pengedaran ditentukan oleh argumen. Lihat dokumentasi rasmi untuk butiran.

random.randrange()(Integer julat dan langkah arbitrari)

randrange(start, stop, step)
Fungsi modul rawak ini mengembalikan elemen yang dipilih secara rawak daripada elemen berikut.
range(start, stop, step)

Seperti julat(), hujah bermula dan langkah boleh diabaikan. Jika mereka ditinggalkan, mulakan=0 dan langkah=1.

import random

print(list(range(10)))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(random.randrange(10))
# 5

Langkah hujah boleh ditetapkan untuk menjana integer rawak genap atau ganjil, atau integer rawak yang merupakan gandaan tiga.

Contohnya, jika permulaan genap dan langkah=2, hanya integer genap dalam julat boleh diperolehi secara rawak.

print(list(range(10, 20, 2)))
# [10, 12, 14, 16, 18]

print(random.randrange(10, 20, 2))
# 18

random.randint()(Integer dalam mana-mana julat)

randint(a, b)
Fungsi modul rawak ini mengembalikan int integer rawak berikut.
a <= n <= b
randrange(a, b + 1)Setaraf dengan ini; ambil perhatian bahawa nilai b juga termasuk dalam julat.

print(random.randint(50, 100))
# print(random.randrange(50, 101))
# 74

Menjana senarai dengan nombor rawak sebagai elemen

Dalam bahagian ini, kami akan menerangkan cara menggunakan modul rawak perpustakaan standard untuk menjana senarai dengan nombor rawak sebagai elemen.

Senarai nombor rawak dengan apungan titik terapung

Untuk menjana senarai yang unsurnya ialah nombor rawak titik terapung, gabungkan fungsi rawak() dan seragam() dengan tatatanda pemahaman senarai.

import random

print([random.random() for i in range(5)])
# [0.5518201298350598, 0.3476911314933616, 0.8463426180468342, 0.8949046353303931, 0.40822657702632625]

Dalam contoh di atas, julat() digunakan, tetapi senarai dan tupel juga mungkin untuk bilangan elemen yang dikehendaki. Untuk butiran lanjut tentang pemahaman senarai, sila rujuk artikel berikut.

Senarai nombor rawak integer int

Apabila menjana senarai yang unsur-unsurnya ialah nombor rawak integer, menggabungkan randange() dan randint() di atas dengan tatatanda pemahaman senarai boleh menghasilkan nilai pendua.

print([random.randint(0, 10) for i in range(5)])
# [8, 5, 7, 10, 7]

Jika anda ingin membuat urutan integer rawak tanpa pertindihan, ekstrak elemen julat() dengan julat arbitrari menggunakan random.sample().

print(random.sample(range(10), k=5))
# [6, 4, 3, 7, 5]

print(random.sample(range(100, 200, 10), k=5))
# [130, 190, 140, 150, 170]

Untuk maklumat lanjut tentang random.sample(), sila rujuk artikel berikut.

Mulakan penjana nombor rawak (tetapkan benih nombor rawak)

Dengan memberikan integer arbitrari kepada seed() fungsi modul rawak, benih nombor rawak boleh dibetulkan dan penjana nombor rawak boleh dimulakan.

Selepas pemulaan dengan benih yang sama, nilai rawak sentiasa dijana dengan cara yang sama.

random.seed(0)
print(random.random())
# 0.8444218515250481

print(random.random())
# 0.7579544029403025

random.seed(0)
print(random.random())
# 0.8444218515250481

print(random.random())
# 0.7579544029403025
Copied title and URL