答案 0 :(得分:2)
方法1:
import random
def get_rand_array(lower_bound, upper_bound, total_nums):
rand_set = set()
while( len(rand_set) < total_nums ):
rand_set.add( random.uniform(lower_bound, upper_bound) )
return rand_set
a = get_rand_array(1.0, 1.2, 5)
print( str(a) )
在每次迭代中,生成所需范围内的随机数并将其添加到set
,以确保其中的每个元素都是唯一的
方法2:
import random
def get_random_array(lower_limit, upper_limit, total_nums):
rand_array = []
while( len(rand_array) < total_nums ):
current_rand = random.uniform(lower_limit, upper_limit)
if( current_rand not in rand_array ):
rand_array.append(current_rand)
return rand_array
a = get_random_array(3.0, 3.1, 5)
print( str(a) )
不是像方法1中那样使用set
,而是在每次迭代中检查current_rand
中是否已存在rand_array
;如果缺席,请将其附加到rand_array
,以确保rand_array
中的唯一元素。
答案 1 :(得分:1)
>>> import random
>>> n = 5
>>> a, b = 0., 10.
>>> [random.uniform(a, b) for _ in range(n)]
[1.1617037103617134,
5.977376104342625,
7.04027407732932,
0.10349393354524894,
2.3731423390045023]
如果您担心唯一性,可以计算找到重复的奇数。它由the following relationship给出:
d
2**52
和n
的位置,即要生成的随机数。对于一千个值,概率为1.11e-10
。这意味着你成为百万富翁{64}的可能性比在这个列表中找到重复的人高64倍。
答案 2 :(得分:0)
如果你有笨蛋,这会容易得多。
import numpy as np
x=np.random.uniform(1,100,10)
print(x)
[22.31472037 90.3789552 28.4565216 34.79490853 16.48289675 39.15659334
15.63986831 24.15726628 3.0404023 16.43198165]