Sukurkite atsitiktinius sveikus skaičius nuo 0 iki 9

Kaip Python sistemoje generuoti atsitiktinius sveikuosius skaičius nuo 0 iki 9 (imtinai)?

Pavyzdžiui, 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9

1003
22 окт. nustatyti aneuryzm 22 spalis. 2010-10-22 15:48 '10, 15:48, 2010-10-22 15:48
ответ 21 atsakymas

Pabandykite:

 from random import randint print(randint(0, 9)) 

Daugiau informacijos: https://docs.python.org/3/library/random.html#random.randint

1603
22 окт. atsakymas, kurį pateikė kovšeninas, spalio 22 d 2010-10-22 15:51 '10, 15:51, 2010-10-22 15:51
 import random print(random.randint(0,9)) 

 random.randint(a, b) 
border=0

Grąžina atsitiktinį sveikąjį skaičių N, kad a <= N <= b.

Dokumentai: https://docs.python.org/3.1/library/random.html#random.randint

300
04 мая '13 в 20:13 2013-05-04 20:13 atsakymą pateikė JMSamudio 04 gegužės 13 d. 20:13 2013-05-04 20:13

Pabandykite atlikti šiuos veiksmus:

 from random import randrange, uniform # randrange gives you an integral value irand = randrange(0, 10) # uniform gives you a floating-point value frand = uniform(0, 10) 
95
22 окт. atsakymas į Andrew Hare, spalio 22 d. 2010-10-22 15:49 '10, 15:49, 2010-10-22 15:49
 from random import randint x = [randint(0, 9) for p in range(0, 10)] 

Jis generuoja 10 pseudo atsitiktinių sveikų skaičių intervale nuo 0 iki 9 imtinai.

54
26 нояб. atsakymą pateikė vartotojo14372 lapkričio 26 d. 2013-11-26 20:39 '13, 08:39 pm 2013-11-26 20:39

secrets modulis yra naujas „Python“ 3.6. Tai geriau nei random modulis, skirtas kriptografijai ar saugumui.

Atsitiktinai atspausdinti sveikąjį skaičių į 0–9 imtinai:

 from secrets import randbelow print(randbelow(10)) 

Daugiau informacijos rasite PEP 506 .

37
06 дек. atsakymas, kurį pateikė Chris_Rands 06 dec. 2016-12-06 13:29 '16 at 13:29 pm 2016-12-06 13:29

Pabandykite tai atlikti random.shuffle

 >>> import random >>> nums = [x for x in range(10)] >>> random.shuffle(nums) >>> nums [6, 3, 5, 4, 0, 1, 2, 9, 8, 7] 
20
29 окт. atsakymas pateikiamas zangw 29 oct. 2015-10-29 12:13 '15, 12:13 2015-10-29 12:13

Pasirinkite masyvo dydį (šiame pavyzdyje pasirinkau 20 dydį). Ir tada naudokite šiuos veiksmus:

 import numpy as np np.random.randint(10, size=(1, 20)) 

Galite tikėtis, kad išeisite iš šios formos (kiekvieną kartą paleidus grįžtamąjį skaičių bus grąžinti skirtingi atsitiktiniai skaičiai, todėl galite tikėtis, kad išvesties matricoje visi skaičiai skirsis nuo toliau pateikto pavyzdžio).

 array([[1, 6, 1, 2, 8, 6, 3, 3, 2, 5, 6, 5, 0, 9, 5, 6, 4, 5, 9, 3]]) 
15
02 февр. Atsakymą pateikė Bendrasis 02 vasaris. 2017-02-02 09:35 '17 ne 9:35 2017-02-02 09:35

Nuolatiniams numeriams randint arba randrange yra tikriausiai geriausias pasirinkimas, bet jei turite keletą skirtingų reikšmių sekoje (pvz., list ), galite naudoti ir choice :

 >>> import random >>> values = list(range(10)) >>> random.choice(values) 5 

choice taip pat veikia vieno elemento iš nepertraukiamo pavyzdžio:

 >>> values = [1, 2, 3, 5, 7, 10] >>> random.choice(values) 7 

Jei jums reikia „kriptografiškai stiprios“, taip pat yra secrets.choice 3.6.

 >>> import secrets >>> values = list(range(10)) >>> secrets.choice(values) 2 
13
03 июня '17 в 4:45 2017-06-03 04:45 Atsakymą pateikė „ MSeifert“ birželio 03 d. 17, 04:45 2017-06-03 04:45

jei norite naudoti numpy, naudokite šiuos veiksmus:

 import numpy as np print(np.random.randint(0,10)) 
9
12 янв. atsakymas pateikiamas sushmit 12 sausis 2017-01-12 06:12 '17 at 6:12 2017-01-12 06:12

Pradinis klausimas reiškia atsitiktinių sveikųjų skaičių rinkinio sukūrimą.

Kaip „Python“ sukurti sveikus skaičius nuo 0 iki 9 (imtinai)?

Tačiau daugelis atsakymų rodo tik tai, kaip gauti vieną atsitiktinį skaičių, pavyzdžiui, atsitiktinę.

Keli atsitiktiniai sveikieji skaičiai

Siekiant aiškumo, naudodami šiuos metodus galite sukurti kelis atsitiktinius numerius, tiesiog pakartodami N kartus:

 import random N = 5 [random.randint(0, 9) for _ in range(N)] # [9, 7, 0, 7, 3] [random.choice(range(10)) for _ in range(N)] # [8, 3, 6, 8, 7] 

Atsitiktinių sveikųjų skaičių pavyzdys

Kai kurie pranešimai rodo, kaip iš pradžių sukurti atsitiktinių skaičių skaičių. 1 Štai keletas variantų, turinčių įtakos numanomam klausimui:

random.sample grąžina k unikalius gyventojų pasirinkimus (be pakeitimo): 2

 random.sample(range(10), k=N) # [4, 5, 1, 2, 3] 

„Python 3.6“ random.choices grąžina k random.choices iš gyventojų (su pakeitimu):

 random.choices(range(10), k=N) # [3, 2, 0, 8, 2] 

Žr. Taip pat šis susietas įrašas naudojant numpy.random.choice .

1 Būtent @John Lawrence Aspden, @ST Mohammed, @SiddTheKid, @ user14372, @zangw ir tt

2 @prashanth mini šį modulį, kuriame rodomas vienas sveikasis skaičius.

8
22 сент. atsakymas duotas balandis 22 d 2017-09-22 07:29 '17 7:29 am 2017-09-22 07:29
 >>> import random >>> random.randrange(10) 3 >>> random.randrange(10) 1 

Norėdami gauti dešimties pavyzdžių sąrašą:

 >>> [random.randrange(10) for x in range(10)] [9, 0, 4, 0, 5, 7, 4, 3, 6, 8] 
7
10 авг. John Lawrence Aspden atsakymas, rugpjūčio 10 d. 2017-08-10 18:48 '17, 18:48 pm 2017-08-10 18:48

Sukurkite atsitiktinius sveikus skaičius nuo 0 iki 9.

 import numpy X = numpy.random.randint(0, 10, size=10) print(X) 

Išeiti:

 [4 8 0 4 9 6 9 9 0 7] 
5
06 июля '18 в 9:25 2018-07-06 09:25 Ashok Kumar Jayaraman atsakymas liepos 06 d., 18 d., 9:25, 2018-07-06 09:25

random.sample yra kitas, kurį galima naudoti

 import random n = 1 # specify the no. of numbers num = random.sample(range(10), n) num[0] # is the required number 
5
14 мая '17 в 19:46 2017-05-14 19:46 atsakymas pateikiamas prashantui gegužės 14 d. 17, 19:46

Geriausias būdas yra naudoti atsitiktinę funkciją.

 import random print(random.sample(range(10), 10)) 

arba neparduodant bibliotekos:

 n={} for i in range(10): n[i]=i for p in range(10): print(n.popitem()[1]) 

čia popitems ištrina ir grąžina savavališką vertę iš žodyno n .

4
15 мая '17 в 21:29 2017-05-15 21:29 atsakė ST Mohammedui gegužės 15 d. 17:29 val

Naudojau kintamąjį diapazonui valdyti

 from random import randint numberStartRange = 1 numberEndRange = 9 randomNumber = randint(numberStartRange, numberEndRange) print(randomNumber) 

Naudodamas spausdinimo funkciją, matavau rezultatus. Galite komentuoti, jei to nereikia.

1
19 сент. atsakymas duotas Amir Md Amiruzzaman rugsėjo 19 d 2017-09-19 14:30 '17, 14.30 val. 2017-09-19 14:30

Nurodytu pavyzdžiu (sveikieji skaičiai nuo 0 iki 9) labiausiai grynas sprendimas yra toks:

 from random import randrange randrange(10) 
1
08 окт. Atsakymas pateikiamas Utku 08 okt. 2018-10-08 17:38 '18, 17:38 pm 2018-10-08 17:38

Galite pabandyti:

 import numpy as np print ( np.random.uniform(low=0, high=10, size=(15,)) ).astype(int) >>> [8 3 6 9 1 0 3 6 3 3 1 2 4 0 4] 

Pastabos:

 ''' np.random.uniform generates uniformly distributed numbers over the half-open interval [low, high). .astype(int) casts the numpy array to int data type. I have chosen size = (15,). This will give you a numpy array of length = 15. ''' 

Sužinokite daugiau apie numpy.random.uniform

Papildoma informacija apie numpy.ndarray.astype

0
28 нояб. atsakymą pateikė Siddharth Satpathy lapkričio 28 d 2018-11-28 10:56 '18, 10:56 am 2018-11-28 10:56

Tai gana matematinis metodas, tačiau jis veikia 100% atvejų:

Tarkime, kad norite naudoti random.random() kad generuotumėte skaičių tarp a ir b . Norėdami tai padaryti, atlikite šiuos veiksmus:

num = (ba)*random.random() + a;

Žinoma, galite sukurti daugiau numerių.

0
30 нояб. atsakymas pateikiamas Orestis Zekai . 2018-11-30 21:27 '18, 21:27 2018-11-30 21:27

Atsitiktinio modulio dokumentacijos puslapyje:

Įspėjimas: šio modulio pseudo-atsitiktiniai generatoriai neturėtų būti naudojami saugumo tikslais. Naudokite os.urandom () arba SystemRandom, jei jums reikia kriptografiškai saugaus pseudo-atsitiktinio skaičiaus generatoriaus.

random.SystemRandom , kuris buvo įvestas „Python 2.4“, laikomas kriptografiškai saugiu. Jis vis dar prieinamas „Python“ 3.7.1.

 >>> import string >>> string.digits '0123456789' >>> import random >>> random.SystemRandom().choice(string.digits) '8' >>> random.SystemRandom().choice(string.digits) '1' >>> random.SystemRandom().choice(string.digits) '8' >>> random.SystemRandom().choice(string.digits) '5' 

Vietoj string.digits , range gali būti naudojamas kai kuriems kitiems atsakymams kartu, galbūt su supratimu. Sumaišykite ir suderinkite pagal savo poreikius.

0
12 дек. Atsakymą pateikė Richard Riehle gruodžio 12 d. 2018-12-12 01:49 '18 at 1:49 2018-12-12 01:49

Išbandykite

 import numpy as np X = np.random.randint(0, 99, size=1000) # 1k random integer 
0
19 дек. Atsakymą pateikė Rakesh Chaudhari gruodžio 19 d. 2018-12-19 13:38 '18, 13:38 2018-12-19 13:38

Man tai pasisekė už „Python“ 3.6

 str_Key = "" str_RandomKey = "" for int_I in range(128): str_Key = random.choice('0123456789') str_RandomKey = str_RandomKey + str_Key 

Tiesiog pakeiskite simbolius, tokius kaip „ABCD“ ir „abcd“ arba „^! ~ = → <“, kad pakeistumėte simbolių ištrauką, pakeiskite diapazoną, kad pakeistumėte generuojamų simbolių skaičių.

-2
21 июля '17 в 2:43 2017-07-21 02:43 Atsakymą pateikė MT vadovas liepos 21 d. 17:28 2:43 2017-07-21 02:43

Kiti klausimai dėl žymių arba Užduoti klausimą