论坛: 编程破解 标题: rand()函数使用,请教高人 复制本贴地址    
作者: zlj982 [zlj982]    论坛用户   登录
题目本来是这样的:有1,2,3,4....n一组数,随即存放在一个数组a中,要求按时间复杂度O(n),来从小到大排列这组数,即输出1.2.3.4....n。
我不懂什么复杂度,只想排列出来了,存储数据时想用rand()函数随机产生一个数,判断是否在区间[1,n]中,然后在存在a中。我的程序是:
#include<iostream.h>
#include<stdlib.h>
void main()
{
int i,j,k,n,t;
cout<<"input the size of array:"<<"\n";
cin>>n;
int *a;
a=new int[n];
cout<<"the array is:"<<"\n";
for(i=0;i<n;i++)
{
k=rand();
if(k>=1&&k<=n)
a[i]=k;
    cout<<a[i]<<" ";

}
//下面是排序过程
.....
.....
}
为什么rand()函数每次都是产生同一个值,不是像我想的产生随机数,应该怎么使用啊?
是不是我的程序有什么问题?谁有什么更好的办法能告诉我么?

地主 发表时间: 05-08-31 07:10

回复: 286 [unique]   版主   登录
在程序最前面加一个
randomize();

B1层 发表时间: 05-08-31 09:22

回复: zlj982 [zlj982]   论坛用户   登录
能详细说一下吗?我加后说randomize没有定义,需要头文件支持么?

B2层 发表时间: 05-08-31 18:00

回复: 286 [unique]   版主   登录
#include<iostream.h>
#include<stdlib.h>
#include <time.h>

void main()
{
int i,j,k,n,t;
srand((unsigned)time(NULL));
cout<<"input the size of array:"<<"\n";
cin>>n;
int *a;
a=new int[n];
cout<<"the array is:"<<"\n";
for(i=0;i<n;i++)
{
k=(unsigned int)rand();
//if(k>=1&&k<=n) //不明白这一句是干什么的。你是想把随机数限制到1~n中吗?
//如果这样限制,应该改为:
k=1+k%n;
a[i]=k;
cout<<a[i]<<" ";

}
}


randomize是c里的,不是c++里的。

B3层 发表时间: 05-09-01 09:46

回复: zlj982 [zlj982]   论坛用户   登录
通过了,谢286

B4层 发表时间: 05-09-01 09:56

回复: 286 [unique]   版主   登录


B5层 发表时间: 05-09-01 11:46

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号