3个回答
展开全部
用快速跳蚤算法吧,可以获得不同随机数,你这数没有范围的话就默认是RAND_MAX了,算法思想是:
For i=0 to RAND_MAX
a(i)=i
Next
For i=0 to (x-1)
r=rand()
Swap a(i),a(r)
Next
For i=1 to x
b(i)=a(i-1)
For i=0 to RAND_MAX
a(i)=i
Next
For i=0 to (x-1)
r=rand()
Swap a(i),a(r)
Next
For i=1 to x
b(i)=a(i-1)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先说思想:
一、用一个数组a[10000]保存结果。
二、循环10000次,每次产生第i个数x,(i从0到9999),按顺序插入在a[0..i-1]中适当位置。若已存在相等的数,则重新生成一个数再插入。
(提示:用二分法搜索a[0..i-1],可得插入位置k,该位置上的数a[k]若等于x,则表明已存在;若不等,则可插入:把a[k..i-1]逐个右移一个位置,然后x放入a[k]。)
三、完毕。
一、用一个数组a[10000]保存结果。
二、循环10000次,每次产生第i个数x,(i从0到9999),按顺序插入在a[0..i-1]中适当位置。若已存在相等的数,则重新生成一个数再插入。
(提示:用二分法搜索a[0..i-1],可得插入位置k,该位置上的数a[k]若等于x,则表明已存在;若不等,则可插入:把a[k..i-1]逐个右移一个位置,然后x放入a[k]。)
三、完毕。
追答
最后在a[]中得到的数列确实是有序的。
可以再弄个数组b[10000],b[i]就直接放第i次产生的数,不排序。
输出的时候,用b[]。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询