[讨论]生成一个由1-7组成的7个数无重复随机数列(C或C++)
这是我的数据结构作业,我想了两个办法:
1.用数组存储数列,反复生成1-7的随机数,同时和前面所有的元素比较,保证无重复时才赋值进数组,直到存满为止。这种算法效率很低。
2.生成从1到7的数列,然后随机排列。我认为“随机排列”同时意味着这种算法可以生成所有可能的排列顺序。
我上交的方法是生成1-7数组a[],再生成7次0-6的随机数n,生成后a[n]与a[0]对调,它的缺陷就是上面提到的无法覆盖所有的排列顺序。
不知哪位朋友能想出个高效率又无缺陷的算法?小弟在这里等大家的好想法了。
我只看得懂C和C++,所以麻烦用别的语言的朋友多加点注释~