前言
此篇文章主要的目的是记录一下随机数的常用生成方法,每次我一没回去复习随机数之后就容易将知识点遗忘掉。
随机数的生成有好几种的方法,此处仅介绍其中一种我认为较方便的方法——[a,b]范围的随机数生成。
一、效果
二、说明
[1]. 先使用srand()函数设置随机数种子
srand((int)time(NULL));
[2]. 生成范围从A~(A+B-1)范围的随机数
rand()%B+A;
你可以将rand()%B+A赋值给某个变量,则该变量就被赋值了一个随机的值,或者是在打印函数中调用输出即可。
三、示例代码
代码中的srand()和rand()函数的使用为重点,C和C++ 代码已包含有必要的注释,请仔细阅读注释。
[1]. C实现
/*
代码作者:小狐狸
联系QQ:1307509553
使用语言: c
原贴链接: https://blog.csdn.net/smallfox233/article/details/105081736
代码介绍:
若没有设置随机数的种子,重新生成的随机数将和上一次输出的随机数相同
生成从a~(a+b-1)的随机数赋值给Y:
1. srand((int)time(NULL))
2. Y=rand()%b+a;
*/
#include<stdio.h>
#include<stdlib.h> //srand()、rand()所需
#include<time.h> //time()所需
int main()
{
srand((int)time(NULL));//设置随机数种子
while(1)
{
int fox;
printf("------------------\n");
printf("| 按0结束 |\n");
printf("| 按1键继续 |\n");
printf("------------------\n");
scanf("%d",&fox);
if(fox==0) break;
int start,last;
int x;
printf("起始数 截止数:\n");
scanf("%d%d",&start,&x);
//起始值即为start,但是截止的值并不是rand()%b+a中b的值.
//因为rand()%b+a中产生随机数的范围是从a到a+b-1
//所以要生成从start到x的随机数的话
//需要满足start=a,同时x=a+b-1,由此可以算出rand()后的b
last=x-start+1;//计算出rand()%b+a中b的值
if(start<0||last<0)//若范围含有小数时,运行时将会出错
{
printf("请输入≥0的数\n");
continue;
}
printf("随机数: %d\n",rand()%last+start);//打印随机数
}
printf("退出系统\n");
return 0;
}
[2]. C++实现
/*
代码作者:小狐狸
联系QQ:1307509553
使用语言: c++
原贴链接: https://blog.csdn.net/smallfox233/article/details/105081736
代码介绍:
若没有设置随机数的种子,重新生成的随机数将和上一次输出的随机数相同
生成从a~(a+b-1)的随机数赋值给Y:
1. srand((int)time(NULL))
2. Y=rand()%b+a;
*/
#include<iostream>
#include<stdio.h>
#include<stdlib.h> //srand()、rand()所需
#include<time.h> //time()所需
using namespace std;
int main()
{
srand((int)time(NULL));//设置随机数种子
while(1)
{
int fox;
cout<<"------------------"<<endl;
cout<<"| 按0结束 |"<<endl;
cout<<"| 按1键继续 |"<<endl;
cout<<"------------------"<<endl;
cin>>fox;
if(fox==0) break;
int start,last;
int x;
cout<<"起始数 截止数:"<<endl;
cin>>start>>x;
//起始值即为start,但是截止的值并不是rand()%b+a中b的值.
//因为rand()%b+a中产生随机数的范围是从a到a+b-1
//所以要生成从start到x的随机数的话
//需要满足start=a,同时x=a+b-1,由此可以算出rand()后的b
last=x-start+1;//计算出rand()%b+a中b的值
if(start<0||last<0)//若范围含有小数时,运行时将会出错
{
cout<<"请输入≥0的数"<<endl;
continue;
}
cout<<"随机数: "<<rand()%last+start<<endl;//打印随机数
}
printf("退出系统\n");
return 0;
}