c\c++ 随机数函数

(1) rand()函数:
   原型: int rand(void)
   功能: 产生从 [0,RAND_MAX] 之间的随机数,RAND_MAX为系统定义的宏, 32位机器上大小为32767。
   头文件: stdlib.h或者iostream

 

(2)srand()函数:
   原型: void srand(unsigned seed)
   功能: 产生随机数的起始发生数据,和rand函数配合使用
   头文件: stdlib.h或者iostream   time.h

   比如以当前时间作为起始发生数据:srand( (unsigned)time(0) );

 

(3) randomize()函数:
   原型: void randomize(void)
   功能: 通过time函数来初始化随机数发生器,和srand( (unsigned)time(0) )语句功能相同

   头文件: stdlib.h   time.h

 

(4)random()函数

     原型:int random(int num)

     功能:random函数返回一个0~num-1之间的随机数. random(num)是在stdlib.h中的一个宏定义

     头文件:stdlib.h

 

(5)产生[minNum, maxNum]范围内的整数随机数

1 //产生[minNum, maxNum]的随机数
2 default_random_engine generator(time(0));
3 int myrand(int minNum, int maxNum)
4 {
5     std::uniform_int_distribution<int> distribution(minNum, maxNum);
6     return distribution(generator);
7 }

 

 

注意几点:

1 从vc6.0以后randomize()和random()都已经不能用了,完全由srand()和rand()代替。但是在tc和c++ builder中还是可以用的(亲自测试),此时randomize、srand 和 random、rand两组之间可以任意组合,效果均没差别

2 如果没有初始化随机数发生器,程序每次重新运行产生的随机数都相同

3 若循环产生随机数,srand(time(0))不要放在循环内部,因为time()的精度是秒,如果两次time()之间程序没有超过一秒,其返回值是一样的,srand(time(0))设置的随机种子也就一样,产生的随机数也就一样

 

用法:(rand和srand比较通用,以下用它们举例)
1 产生[0,1]的小数:  rand()*1.0/RAND_MAX

2 产生[0,x]的整数:  rand()%(x+1)

3 产生[x,y]的整数:  rand()%(Y-X+1)+X(由于rand()产生的随机数最大为32767,因此如果范围内包括比32767大的数,要用 rand()*(y-x)/RAND_MAX +X  )

#include<stdlib.h>

#include<stdio.h>

#include<time.h>

int main()

{

  srand((unsigned)time(0)); //srand放在循环外面

  for(int i=1;i<=10;i++)

     printf("%d ",rand()1);

}

 【版权声明】转载请注明出处 http://www.cnblogs.com/TenosDoIt/archive/2013/04/15/3022029.html

转载于:https://www.cnblogs.com/TenosDoIt/archive/2013/04/15/3022029.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值