c - 是否有任何加扰单词的算法?

标签 c algorithm word scramble

<分区>

我正在尝试制作单词加扰器,想知道是否有任何我应该使用的算法,或者我是否应该从头开始构建它。任何指示都会有所帮助!

最佳答案

用于查找元素序列(或者,在您的情况下,单词中的字母)的随机排列的标准算法是 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/

相关文章:

c - Dirent结构的成员

c - 以下算法的顺序是什么?

python - 如何计算首字母大写的单词出现的比例

bash - 将多词参数传递给 bash 函数

linux - 如何在 Linux 中的文件中添加带有特定单词的新列?

c - 数据结构中的二进制搜索和 C 中的算法分析

c++ - 用锯齿线连接两条线

php - 调试递归 while 循环 (php)

高效区分大文件的算法

c++ - 在 Windows 启动修复期间执行代码/脚本