而不是完整的shuffle
,我正在寻找一个部分shuffle
函数在python中。如何在Python中进行随机但部分洗牌?
例如:“字符串”必须引起“stnrig”,而不是“nrsgit”
它会更好,如果我可以定义要重新排列字符的具体的“百分比”。
目的是测试字符串比较算法。我想确定“洗牌的百分比”,超过这个百分比,我的算法会将两个(混洗)字符串标记为完全不同。
更新:
这里是我的代码。欢迎改进!
import random
percent_to_shuffle = int(raw_input("Give the percent value to shuffle : "))
to_shuffle = list(raw_input("Give the string to be shuffled : "))
num_of_chars_to_shuffle = int((len(to_shuffle)*percent_to_shuffle)/100)
for i in range(0,num_of_chars_to_shuffle):
x=random.randint(0,(len(to_shuffle)-1))
y=random.randint(0,(len(to_shuffle)-1))
z=to_shuffle[x]
to_shuffle[x]=to_shuffle[y]
to_shuffle[y]=z
print ''.join(to_shuffle)
与洗牌的代码的问题是,你可以结了如果有一系列交换使得一个循环... – fortran
是的,这对小字符串来说是完全可能的。我认为我的代码偏向于速度而不是准确性。 – 384X21
一些其他技巧:为什么你在循环结束时递增'i'?它不应该有任何效果(我认为这是一个'while'版本剩下的);在Python中使用元组解构而不是使用中间变量交换更具惯用性。 – fortran