上海龙凤419

C说话

C/C++发生指定规模和不定规模随机数的实例代码

时候:2024-10-09 11:28:18 C说话 我要投稿
  • 相干保举

C/C++发生指定规模和不定规模随机数的实例代码

  想要学C/C++的伴侣,上面,就和小编一路来看一看C/C++发生指定规模和不定规模随机数的实例代码,但愿对大师有赞助!

  一. 不指定规模发生随机数

  用到函数rand(),函数原型为int ra

  nd(),无参数。此时会发生一个介于0~RAND_MAX间的整数。RAND_MAX的巨细能够检查,在include文件夹(linux在usr目次、windows在装置目次)的stdlib.h能够看到,linux下其值为2147483647(),其值与详细体系有关。

  参考代码:

  复制代码 代码以下:

  #include

  #include

  int main()

  {

  int i;

  for(i=0; i<10; i++) //随机发生10个数。

  {

  printf("%dn", rand());

  }

  return 0;

  }

  二. 指定规模发生随机数,发生0到某个数的随机数

  不现成的函数,可是能够经由过程取余获得

  复制代码 代码以下:

  #include

  #include

  #define Random(x) (rand() % x) //经由过程取余获得指定规模的随机数

  int main()

  {

  int i;

  int dis; //发生[0, dis)之间的随机数,注重不包含dis

  for(i=0; i<10; i++)

  {

  printf("%dn", Random(dis));

  }

  return 0;

  }

  申明下:假定dis取5

  注重一个题目:以上两个法式每次履行发生的成果是不异的,既是个伪随机数。rand()发生随机数与详细的种子有关,当不特地用srand()获得种子时,种子的默许值为1,是以须要用srand()函数发生差别的种子,srand函数原型:void srand(unsigned seed);为了发生差别的种子值,凡是用时候作为参数值。比方对一,点窜法式以下:

  复制代码 代码以下:

  #include

  #include

  #include

  int main()

  {

  int i;

  srand((int)time(NULL)); //每次履行种子差别,天生差别的随机数

  for(i=0; i<10; i++)

  {

  printf("%dn", rand()); //由于履行太快,不到一秒钟,10个随机数是雷同的,可是每次履行是差别的

  }

  return 0;

  }

  三. 指定规模发生随机数

  请求:指定规模(m,n),m、n干系不定,随机数包含m和n

  想方想法,把规模(m,n)转变到(0,X),到最初再转移归去。三种环境

  复制代码 代码以下:

  1:m=n此时不该叫随机数,这里前往m

  2:m>n:

  标记pos=n,间隔差pos=m-n+1

  前往 rand() % dis + pos

  3:n>m:

  标记pos=m,间隔差=n-m+1

  前往rand()%dis + pos

  参考代码:

  复制代码 代码以下:

  #include

  #include

  #include

  int Random(int m, int n)

  {

  int pos, dis;

  if(m == n)

  {

  return m;

  }

  else if(m > n)

  {

  pos = n;

  dis = m - n + 1;

  return rand() % dis + pos;

  }

  else

  {

  pos = m;

  dis = n - m + 1;

  return rand() % dis + pos;

  }

  }

  int main()

  {

  int i, m, n;

  srand((int)time(NULL));

  m = -3;

  n = -7;

  for(i=0; i<10; i++)

  {

  printf("%dn", Random(m, n));

  }

  return 0;

  }

  升华

  srand((unsigned)time(null));

  (a,b) (rand()%(b-a+1))+a-1

  [a,b) (rand()%(b-a))+a

  (a,b] (rand()%(b-a))+a+1

  [a,b] (rand()%(b-a+1))+a

【C/C++发生指定规模和不定规模随机数的实例代码】相干文章:

C 说话发生随机数的方式08-28

C与C++之间彼此挪用的实例07-07

C说话疾速排序实例代码06-04

C和C++的干系讲解10-12

C说话挑选排序算法及实例代码07-25

C说话拔出排序算法及实例代码07-02

C说话合并排序及实例代码详解11-02

C说话以数据块的情势读写文件实例代码10-09

C#完成协同过滤算法的实例代码06-19

浅谈c说话和c++和VB的区分07-04