我是python的新手(或对此编程)。我正在寻找一个具有两个参数的def函数:位列表和错误概率。
对于位列表中的每个元素,都有机会(错误概率)将元素从0翻转到1,反之亦然。该函数应返回新列表,其中包含位和被翻转的实际位数。
我已经进行了大约一个半小时的实验,但实际上并没有提出任何建议。我知道我们应该在def函数中使用random.random函数和一个for循环,但实际上没有任何作用。
结果应如下所示:
>>>x
[0,0,1,1,0,0,0,0]
>>>(NewList,FlipTimes)=TheFunction(x,0.2)
>>>NewList
[0,0,1,0,1,0,0,1]
>>>FlipTimes
3
再次,我对编程非常陌生,所以我在这里的尝试是徒劳的。
def addNoise(a,b):
c=0
for x in a:
y=random.random
if y<b:
if x==1:
x=0
else:
x=1
for i in x:
if y<b== True:
c+=1
return(x,c)
答案 0 :(得分:1)
import random
def flipbit(x, prob):
count = 0
out = []
for e in x:
if random.random() <= prob:
count += 1
out.append(int(not e))
else:
out.append(e)
return out, count
x = [0,0,1,0,1,0,0,1]
new_list, flip_times = flipbit(x, 0.2)
print ('original: ', x)
print ('new list: ', new_list)
print ('flip times: ', flip_times)
# original: [0, 0, 1, 0, 1, 0, 0, 1]
# new list: [0, 0, 1, 0, 1, 1, 1, 1]
# flip times: 2