快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

新蒲京澳门赌场网站:随机函数rand ()C++



一、C++中不能应用random()函数

random函数不是ANSI C标准,不能在gcc,v新蒲京澳门赌场网站c等编译器下编译经由过程。但在C说话中int random(num)可以这样应用,它返回的是0至num-1的一个随机数。 可改用C++下的rand函数来实现。

1、C++标准函数库供给一随机数天生器rand,返回0-RAND_MAX之间平均散播的伪随机整数。 RAND_MAX必须至少为32767.rand()函数不吸收参数,默认以1为种子(即肇端值)。 随机数天生器总因此相同的种子开始,以是形成的伪随机数列也相同,掉去了随机意义。(但这样便于法度榜样调试)

2、C++中另一函数srand(),可以指定不合的数(无符号整数变元)为新蒲京澳门赌场网站种子。然则假如种子相同,伪随机数列也相同。一个法子是让用户输入种子,然则仍旧不抱负。

3、 对照抱负的是用变更的数,比如光阴来作为随机数天生器的种子。 time的值不时候刻都不合。以新蒲京澳门赌场网站是种子不合,以是,孕育发生的随机数也不新蒲京澳门赌场网站合。

// C++随机函数(VC program)

#include

#include

#include

using namespace std;

#define MAX 100

int main(int argc, char* argv[])

{

srand( (unsigned)time( NULL ) );//srand()函数孕育发生一个以当前光阴开始的随机种子.应该放在for等轮回语句前面 不然要很长光阴等待

for (int i=0;i

二、rand()的用法ra新蒲京澳门赌场网站nd()不必要参数,它会返回一个从0到最大年夜随机数的随意率性整数,最大年夜随机数的大年夜小平日是固定的一个大年夜整数。

/*maximumvaluereturnedby"rand"function

*/

#defineRAND_MAX0x7fffu

这个是bcc55中的定义,阐明这个整数的最大年夜数是0x7fffu,u代表unicode编码。

这样,假如你要孕育发生0~10的10个整数,可以表达为:

int N = rand() % 11;

这样,N的值便是一个0~10的随机数,假如要孕育发生1~10,则是这样:

int N = 1 + rand() % 11;

总结来说,可以表示为:

a + rand() % n

此中的a是肇端值,n是整数的范围。

a + rand() % (b-a+1) 就表示 a~b之间的一个随机数

若要0~1的小数,则可以先取得0~10的整数,然后均除以10即可获得随机到十分位的10个随机小数,若要获得随机到百分位的随机小数,则必要先获得0~100的10个整数,然后均除以100,其它环境依此类推。

平日rand()孕育发生的随机数在每次运行的时刻都是与上一次相同的,这是故意这样设计的,是为了便于法度榜样的调试。若要孕育发生每次不合的随机数,可以应用srand( seed )函数进行随机化,跟着seed的不合,就能够孕育发生不合的随机数。

如大年夜家所说,还可以包孕time.h头文件,然后应用srand(time(0))来应用当前光阴使随机数发生器随机化,这样就可以包管每两次运行时可以获得不合的随机数序列(只要两次运行的距离跨越1秒)。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: