c++里 rand怎么用

供稿:hz-xin.com     日期:2025-01-15
C++中rand()是怎样定义的?

rand的内部实现是用线性同余法做的,他不是真的随机数,只不过是因为其周期特别长,所以有一定的范围里可看成是随机的,rand()会返回一随机数值,范围在0至RAND_MAX 间。在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。rand ()产生的是假随机数字,每次执行时是相同的。若要不同,以不同的值来初始化它.初始化的函数就是srand()。

线性同余法见
http://www.itzhe.com/article_html/d9/48307.html

使用rand函数时头文件应该包括stdlib.h,rand()函数用来产生随机数,但是,rand()的内部实现是用线性同余法实现的,是伪随机数,由于周期较长,因此在一定范围内可以看成是随机的。rand()会返回一个范围在0到RAND_MAX(至少是32767)之间的伪随机数(整数)。
在调用rand()函数之前,可以使用srand()函数设置随机数种子,如果没有设置随机数种子,rand()函数在调用时,自动设计随机数种子为1。随机种子相同,每次产生的随机数也会相同。rand()函数需要的头文件是:
rand()函数原型:int rand(void);使用rand()函数产生1-100以内的随机整数:int number1 = rand() % 100+1。

扩展资料:
使用rand()和srand()产生指定范围内的随机整数的方法,“模除+加法”的方法因为,对于任意数,0<=rand()%(n-m+1)<=n-m,因此,0+m<=rand()%(n-m+1)+m<=n-m+m,因此,如要产生[m,n]范围内的随机数num,可用:
int num=rand()%(n-m+1)+m。其中的rand()%(n-m+1)+m算是一个公式,记录一下方便以后查阅。比如产生10~30的随机整数:srand(time(0)),int a = rand() % (21)+10。

rand()的用法  

参考代码:



rand()%3+1,

在使用rand()前,要设置种子

srand(time(NULL)),比如:

#include <iostream>
#include <time.h>
using namespace std;
int main()
{
srand(time(NULL));
int i,j;

cout<<"随机10次的结果"<<endl;
for (j=0;j<10;j++)
{
i=rand()%3+1;
cout<<i<<endl;
}
}



#include<iostream>
#include<time.h>//或者#include<ctime>
using namespace std;
int main()
{
srand( (unsigned)time( NULL ) );
int select = rand() % 4+1;
cout<<select;
return 0;
}
两种头文件VC++6.0运行没错,你对照一下吧

rand()每次的数都一样的
用srand()要提供一个seed,这样会根据这个seed产生不同的随机数,一楼说的很清楚了
还可以使用randint.h,使用RandomInt Nbr(x,y)命令,xy为要求的范围

#include<ctime>

取0-9;
int n=rand()%10;
避免每次运行所取的随机数都一样
程序开始可以加入 srand(unsigned(time(NULL)));

Microsoft Visual C++ 6.0中如何用rand()函数产生1~10,1~100,1~1000...
VC附带有C标准库组件,包含头文件<stdlib.h>、。:srand((unsigned)time(NULL));int v, i;for(v = 10; v<=1000; v *= 10) { printf("0~%d:\\n", v);for(i = 1; i < v; ++i)cout<<rand()%v<<" ";}

rand、rnd、random、randomize有什么区别?
用 法: void randomize(void);程序例:include <stdlib.h> include <stdio.h> include int main(void){ int i;randomize();printf("Ten random numbers from 0 to 99\\n\\n");for(i=0; i<10; i++)printf("%d\\n", rand() % 100);return 0;} 函数名: rand 功 能: 随机数发生...

c++中如何利用rand_max随机产生一个0至9之间的数,1到2之间的数,-1到1...
include<iostream> include<ctime> using namespace std;int main(){ srand(time( 0));cout<<"请输入你想生成多少数字:"<<endl; \/\/生成多少数字 int n=0;cin>>n;cout<<"在0~9之间的数是:"<<endl; \/\/在0~9之间的数是 for(int i=0;i<n;i++){ int num1=rand()%10;if...

怎样在C++中产生10个30~100的随机数
C++中没有自带的random函数,要实现随机数的生成就需要使用rand()和srand()。不过,由于rand()的内部实现是用线性同余法做的,所以生成的并不是真正的随机数,而是在一定范围内可看为随机的伪随机数。代码如下:include <iostream> include <cstdlib> include <ctime> define random(a,b) (rand()%...

想在c语言中随机产生1或2该怎么做?
int i = ++(rand()%2);在文件头加上 include <stdlib.h> 代码解释如下:首先是用随机数函数生成随机数,模2之后生成的随机数是0或者1,++操作之后就是1或者2了,希望对你有用,望采纳~

C语言 随机函数
i++;是i=i+1;的缩写,c++之所以后面有++,就是因为有这样的缩写。rand()是个函数,每次调用会给你返回一个unsigned int数,即无符号整数,具体这个函数可以百度百科rand(),返回的数用伪随机算法,在你看起来是随机变化的,范围在0~4294967295之间 是c++的整数运算符,如果写a%b就是求a除以b以...

怎么控制 C++生成随机数的范围
大概就是这样:rand()%\/\/注意没有范围高级一点的:(注意有头文件time.h)int a{ srand((unsigned\/*此处填随机种子,我选用时间*\/)time(NULL)); rand()%x\/*x处填范围*\/; }代码运用:(注意还保存到文件里了)include<stdio.h>#include<stdlib.h>#include<conio.h>#include<windows...

在c++里怎么弄随机数? 还有,怎么弄种子
通常rand()产生的随机数在每次运行的时候都是与上一次相同的,这是有意这样设计的,是为了便于程序的调试。若要产生每次不同的随机数,可以使用srand( seed )函数进行随机化,随着seed的不同,就能够产生不同的随机数。如大家所说,还可以包含time.h头文件,然后使用srand(time(0))来使用当前时间使...

c++中rand()求得的随机值最大值的问题
rand()会返回一随机数值,范围在0至RAND_MAX 间 ,RAND_MAX 要看头文件里面的定义才知道是多大。4字节的int最大值是0x7fffffff,unsigned int最大值是0xffffffff,用十六进制表示吧。这样就明了。include <iostream> using namespace std;int main(){ cout<<0x7fffffff<<endl;return 0;} ...

怎么样在vc++产生随机数介于50到100之间
rand()这个函数 方法如下:先生成随机种子 srand((unsigned)time(NULL));然后可以用 % 求余的方式控制范围 int i;i = rand()%100 可以再加个判断就可以了 if (i>=50 && i<=100){ 代码部分 }