Python'da 0 ile 9 arasında rastgele bir rakam oluşturmanın iki belirgin yolu vardır. 0 ile 1 arasında rastgele bir kayan nokta sayısı üretilebilir, 10 ile çarpılabilir ve yuvarlanabilir. Alternatif olarak, random.randint
yöntem kullanılabilir.
import random
def random_digit_1():
return int(10 * random.random())
def random_digit_2():
return random.randint(0, 9)
Birisi 0 ile 1 arasında rastgele bir sayı üretip son basamağı tutarsa ne olacağını merak ediyordum . Dağıtımın tek tip olmasını beklemiyordum, ama sonucu oldukça şaşırtıcı buldum.
from random import random, seed
from collections import Counter
seed(0)
counts = Counter(int(str(random())[-1]) for _ in range(1_000_000))
print(counts)
Çıktı:
Counter({1: 84206,
5: 130245,
3: 119433,
6: 129835,
8: 101488,
2: 100861,
9: 84796,
4: 129088,
7: 120048})
Bir histogram aşağıda gösterilmiştir. Sondaki sıfırlar kesildiğinden 0'ın görünmediğine dikkat edin. Ancak 4, 5 ve 6 basamaklarının neden diğerlerinden daha yaygın olduğunu açıklayabilir mi? Python 3.6.10 kullandım, ancak sonuçlar Python 3.8.0a4'te benzerdi.
str
problemlere neden olan temel-10'a dönüştürür. örneğin, 1 bit şamandıralı mantis b0 -> 1.0
ve b1 -> 1.5
. "Son basamak" her zaman 0
veya olur 5
.
random.randrange(10)
daha açıktır, IMHO. random.randint
( random.randrange
başlık altında aramalar ) random
Python'da aralıkların nasıl çalıştığını anlamayan insanlar için modüle daha sonraki bir eklemeydi. ;)
randrange
olduğuna karar verdikten sonra aslında ikinci randint
oldu.