我想模擬消息上的錯誤(例如:1000010011 => 1010000011)。有沒有辦法在Python中實現這個?我嘗試了以下,它的作品:如何使用高斯分佈對列表進行混洗
import random
a = "1011101101"
b = [el for el in a] # b = ['1', '0', '1', '1', '1', '0', '1', '1', '0', '1']
random.shuffle(b)
print b # b = ['0', '1', '1', '1', '0', '1', '1', '1', '1', '0']
random.shuffle(b, random.random)
print b # b = ['1', '1', '0', '1', '1', '0', '1', '0', '1', '1']
我想我的重新排序是正常/高斯分佈。 如:
import random
a = "1011101101"
b = [el for el in a] # b = ['1', '0', '1', '1', '1', '0', '1', '1', '0', '1']
random.shuffle(b,random.gauss(0.5,0.1))
print b # b = ['1', '0', '1', '1', '0', '0', '1', '1', '1', '1'] <= assume this is Gaussian distributed...
# OR
c = random.gauss(0.5,0.1)
random.shuffle(b,c)
print b # b = ['0', '0', '1', '1', '1', '0', '1', '1', '1', '1'] <= assume this is also Gaussian distributed...
但是,這並不工作,我得到的消息:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\random.py", line 287, in shuffle
j = int(random() * (i+1))
TypeError: 'float' object is not callable
任何建議/意見將不勝感激。
感謝
注:我只要求重新排序錯誤位置(例如:1000010011 => 1010000011)。但是,我還計劃在模擬突發錯誤(例如:1000010011 => 1011111011),單一事件(例如:1000010011 => 1000010011)等
其他相關的問題:Python: binary string error simulation
你可以用一個簡單的'b = list(a)'來代替'b'的列表理解。 – Droogans