<分区>
我正在尝试制作单词加扰器,想知道是否有任何我应该使用的算法,或者我是否应该从头开始构建它。任何指示都会有所帮助!
<分区>
我正在尝试制作单词加扰器,想知道是否有任何我应该使用的算法,或者我是否应该从头开始构建它。任何指示都会有所帮助!
最佳答案
用于查找元素序列(或者,在您的情况下,单词中的字母)的随机排列的标准算法是 Fisher-Yates shuffle ,它在线性时间内产生了一系列元素的真正随机排列。该算法是公认的,许多标准库都提供了它的实现(例如,C++ std::random_shuffle
算法通常是使用该算法实现的),因此您可以找到预先编写的实现.如果没有,该算法非常容易实现,这里有一些伪代码:
for each index i = 0 to n - 1, inclusive:
choose a random index j in the range i to n - 1, inclusive.
swap A[i] and A[j]
Be careful when implementing this that when picking a random index, you do not pick an index between 0 and n-1 inclusive;这会产生不均匀分布的字母(您可以阅读更多关于 in this earlier question 的信息)。
希望这对您有所帮助!
关于c - 是否有任何加扰单词的算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8631023/