numpy 如何使用random.rand生成随机0或1

inb24sb2  于 2022-12-04  发布在  其他
关注(0)|答案(7)|浏览(208)

我想用numpy的random. rand产生一个0或1。
np.random.rand()会产生0到1之间的随机浮点数,但不只是0或1。

  • 谢谢-谢谢
kq4fsx7k

kq4fsx7k1#

可以将np.random.choice[0,1]列表一起使用,也可以将np.random.radint0,2范围一起使用

In [1]: import numpy as np                                                                                                                                                                                                 

In [2]: np.random.choice([0,1])                                                                                                                                                                                            
Out[2]: 0

In [5]: np.random.choice([0,1])                                                                                                                                                                                            
Out[5]: 1

In [8]: np.random.randint(2)                                                                                                                                                                                             
Out[8]: 0

In [9]: np.random.randint(2)                                                                                                                                                                                             
Out[9]: 1

也可以使用random模块来实现这些函数的等效功能

fzwojiic

fzwojiic2#

您可以使用numpy.random.random_integers

random_int= np.random.random_integers(0,1)
print (random_int)
hi3rlvi2

hi3rlvi23#

您可以使用np.random.randint(low, high=None, size=None)

>>> np.random.randint(0,2,10)
array([0, 1, 1, 0, 1, 1, 0, 0, 1, 0])
>>> np.random.randint(2)
0
>>> np.random.randint(2)
1

有关详细信息,请参阅https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.randint.html

628mspwn

628mspwn4#

你应该考虑使用np.random.randint()这个函数需要一个范围作为输入。例如,

>>> np.random.randint(2)

这将为您提供01的输出

q35jwt9p

q35jwt9p5#

为了补充其他答案,可以简单地做

p_True = 0.5 # 50% probability that you get 1
your_bool = p_True >= np.random.rand() # >= because rand returns a float between 0 and 1, excluding 1.

通过改变p_true,可以得到有偏差的样本。

dpiehjr4

dpiehjr46#

是否有理由专门使用np.random.rand?此函数输出一个浮点数,如问题和前面的答案中所述,您需要阈值处理来获得一个int。
scipy.stats.bernoulli(p)直接输出概率为p的1和概率为1-p的0。

krcsximq

krcsximq7#

你可以使用np.random.choice和一个[0,1]的列表以及一个大小来得到一个随机选择矩阵,如下所示:

In [1]: import numpy as np

In [2]: np.random.choice([0,1], size=(3,4))
Out[2]: array([[1, 0, 0, 0],
               [0, 1, 1, 0],
               [1, 1, 1, 1]])

相关问题