[求助]一道c编程题
实验一 一个常用的随机全排列生成程序
(一)实验内容
1. 生成0~n(n£255)的一个全排列(可选下列二方法之一,也可自己构思其它方法):
方法1:从一个随机文件读取n+1字节数据d0, d1, L, dn。由预先取定的一个0~n的全排列P(比如,可为0~n的自然排列)开始,依次对i=n, n-1, L, 1,计算:
j=di-1+di (mod i)
交换P的第i项第j项(在此注意我们假定P从第0项开始)。
方法2:用一个随机函数产生m(m>n)字节数据d1, d2, L, dm。对d1(mod (n+1)), d2(mod (n+1)), L, dm(mod (n+1))依次考察,把后面出现的与前相同者去掉;在最后剩下的数据中,把没有出现的0~n依序补写于后面。
2. 对第一步生成随机全排列的程序,自己设计一种应用并予以实现。
(二)实验要求
1. 程序须对不超过255的正整数n都容易生成0~n的一个全排列;
2. 对较小的n,抓图显示随机全排列生成程序的计算结果(附页),数据不能出现明显错误;