randrange(start, stop)
yalnızca tamsayı bağımsız değişkenleri alır. Peki iki şamandıra değeri arasında nasıl rastgele bir sayı elde edebilirim?
randrange(start, stop)
yalnızca tamsayı bağımsız değişkenleri alır. Peki iki şamandıra değeri arasında nasıl rastgele bir sayı elde edebilirim?
Yanıtlar:
Rastgele kullanın. Üniforma (a, b) :
>>> random.uniform(1.5, 1.9)
1.8733202628557872
Returns a random floating point number N such that a <= N <= b for a <= b and b <= N <= a for b < a
başka bir deyişle çıktı N
hem giriş a
hem de b
. Bu durumda 1.5
ve 1.9
.
.uniform
işlevi kullanmadan yapmanın başka bir yolu var mı , bunun yerine ya .random
da randrange
?
1.5 + random.random() * (1.9 - 1.5)
bunu yapmalı, teknik özelliklere göre bu asla tam olarak geri dönmeyecektir 1.9
(teoride bile).
uniform(a, b)
olarak uygulanır a + (b-a) * random()
ve döner yuvarlama bağlı aralık [a, b) ya da [a, b] rastgele bir sayı github.com/python/cpython/blob/...
noktanın sağında N rakamı olan rastgele bir şamandıra oluşturmak istiyorsanız, bunu yapabilirsiniz:
round(random.uniform(1,2), N)
ikinci argüman ondalık sayıdır.
En yaygın olarak şunları kullanırsınız:
import random
random.uniform(a, b) # range [a, b) or [a, b] depending on floating-point rounding
Gerekirse Python diğer dağıtımları sağlar .
Eğer varsa numpy
zaten ithal, onun eşdeğeri kullanılır edebilirsiniz:
import numpy as np
np.random.uniform(a, b) # range [a, b)
Yine, başka bir dağıtıma ihtiyacınız varsa numpy
, birçok ek dağıtımın yanı sıra python ile aynı dağıtımları sağlar .
np.random.uniform(start, stop)
veyanp.random.uniform(start, stop, samples)
birden fazla örnek istiyorsanız. Aksi takdirde aşağıdaki cevaplar en iyisidir.