重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
rand函数也是调用dos的时钟,进行的伪随机函数.
创新互联公司于2013年创立,先为云安等服务建站,云安等地企业,进行企业商务咨询服务。为云安企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
你也可以使用时钟来模拟随机函数.
可以试用gettime这个函数:
long int MyRand(int x)
{
struct time t1,t2,t3;
gettime(t1);
int y1=t1.ti_hund;//取1/100s作为基数
gettime(t2);
int y2=t2.ti_hund;//取1/100s作为基数
gettime(t3);
int y3=t3.ti_hund;//取1/100s作为基数
return y1*y2*y3;//产生的随机数0~99*99*99
}
源程序代码以及算法解释如下:
产生1-10随机数程序:
#include iostream
#include time.h
using namespace std;
int main()
{
const int n = 10;//定义随机数个数
int number[n] = { NULL };//定义随机数存储的数组
srand((unsigned)time(NULL));//初始化随机函数
number[0] = rand() % n;//第一个随机数无需比较
cout number[0] " ";
for (int i = 1; i n; i++)//其余随机数循环产生
{
int j = 0;
number[i] = rand() % n;//产生随机数
while (1)
{
if (number[i] == number[j])//若有相同则继续循环重新安排随机数
{
number[i] = rand() % n;//产生随机数
j = 0;//若遇到相同的就从头遍历
continue;
}
if (j == (i - 1))//若遍历完就跳出
break;
j++;
}
cout number[i] " ";
}
cout endl;
return 0;
}
程序运行结果如下:
扩展资料:
利用vector进行随机数输出:
#include iostream
#include vector
#include time.h
using namespace std;
int main()
{
const int n = 10;
int randnum;
vectorint number;
for (int i = 0; i n; i++)
{
number.push_back(i + 1); //从尾部添加元素
cout number[i] " ";
}
cout endl;
srand((unsigned)time(NULL));
for (int j = 0; j n; j++) //其余随机数循环产生
{
randnum = rand() % (n - j); //rand函数生成的随机数是0-(n-1)
cout number.at(randnum) " ";
number.erase(number.begin() + randnum);
}
cout endl;
return 0;
}
一、首先包含必要的头文件
#includestdio.h
这个包含用于输入输出的函数。
#includestdlib.h
这个包含初始化随机数种子、产生随机数的函数。
#includetime.h
这个包含与时间有关的函数,初始化随机数种子时可以用到。
二、使用如下公式产生在区间[min,max]之间的随机数
int r=rand()%(max-min+1)+min;
三、一个例子,产生10个[1,100]的随机整数
#include stdio.h
#include stdlib.h
#include time.h
int main()
{
const int min=1,max=100;
int i,r;
//用当前时间初始化随机数种子
srand(time(NULL));
printf("随机产生的10个1-100的整数是:");
for(i=0;i10;i++)
{
r=rand()%(max-min+1)+min;
printf("%d,",r);
}
return 0;
}
四、运行结果的截图
截图1
截图2