欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C++随机数笔记

程序员文章站 2023-08-30 15:30:09
版权声明:本文为CSDN博主「candyliuxj」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/candyliuxj/article/details/4396666 一、rand()和srand()的关 ......

版权声明:本文为csdn博主「candyliuxj」的原创文章,遵循 cc 4.0 by-sa 版权协议,转载请附上原文出处链接及本声明。

原文链接:

 

一、rand()和srand()的关系

  rand()和srand()要一起使用,其中srand()用来初始化随机数种子,rand()用来产生随机数。

  因为默认情况下随机数种子为1,而相同的随机数种子产生的随机数是一样的,失去了随机性的意义,所以为使每次得到的随机数不一样,用函数srand()初始化随机数种子。srand()的参数,用time函数值(即当前时间),因为两次调用rand()函数的时间通常是不同的,这样就可以保证随机性了。

二、产生一定范围随机数的通用表示公式

  要取得[a,b)的随机整数,使用 (rand() % (b-a))+ a  (结果值含a不含b)。
  要取得[a,b]的随机整数,使用 (rand() % (b-a+1))+ a  (结果值含a和b)。
  要取得(a,b]的随机整数,使用 (rand() % (b-a))+ a + 1  (结果值不含a含b)。

  (总的来说,通用公式:a + rand() % n ;其中的a是起始值,n是整数的范围)

   要取得a到b之间的随机整数,另一种表示 a + (int)b * rand() / (rand_max + 1)

  要取得0~1之间的浮点数,可以使用 rand() / double(rand_max)