gpt4 book ai didi

python随机二进制列表,均匀分布

转载 作者:太空宇宙 更新时间:2023-11-04 09:43:47 26 4
gpt4 key购买 nike

我有代码可以制作任意长度的二进制列表,并打开随机位数:

rand_binary_list = lambda n: [random.randint(0,1) for b in range(1,n+1)]
rand_binary_list(10)

这会返回如下内容:

[0,1,1,0,1,0,1,0,0,0]

如果你运行它一百万次,你会得到一个钟形曲线分布,其中 sum(rand_binary_list(10)) 大约是 5110

我更喜欢打开 10 个中的 1 个位与打开其中一半的可能性相同。开启的位数应均匀分布。

我不确定如何在不损害随机性完整性的情况下做到这一点。有什么想法吗?

编辑:

我想明确地展示这种钟形曲线现象,所以这里是:

>>> import random
>>> rand_binary_list = lambda n: [random.randint(0,1) for b in range(1,n+1)]
>>> counts = {0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0}
>>> for i in range(10000):
... x = sum(rand_binary_list(10))
... counts[x] = counts[x] + 1
...
>>> counts[0]
7
>>> counts[1]
89
>>> counts[2]
454
>>> counts[3]
1217
>>> counts[4]
2017
>>> counts[5]
2465
>>> counts[6]
1995
>>> counts[7]
1183
>>> counts[8]
460
>>> counts[9]
107
>>> counts[10]
6

看到打开 5 位的机会比打开 1 位的机会高得多吗?

最佳答案

像这样:

def randbitlist(n=10):
n_on = random.randint(0, n)
n_off = n - n_on
result = [1]*n_on + [0]*n_off
random.shuffle(result)
return result

“on”的位数应均匀分布在 [0, n] 内(含),然后选择的那些位将均匀分布在整个列表中。

关于python随机二进制列表,均匀分布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50611875/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com