C/C++语言中让电脑随机的在某个范围中的任一随机数

Posted 王大咩的图书馆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C/C++语言中让电脑随机的在某个范围中的任一随机数相关的知识,希望对你有一定的参考价值。

这是我在笔试中碰见的一题中一部分,这就就记录下来。举例,输出[1,3]中任一随机数。

 1 #include<iostream>
 2 #include<cstdlib>
 3 #include<cstdio>
 4 #include<ctime>
 5 
 6 
 7 int main()
 8 {
 9     srand((unsigned)time(NULL));
10 
11     int val = 0;
12     for (int i = 0;i < 50;i++)
13     {
14         val = (rand() % 3) + 1;
15         std::cout << i + 1 << " " << val << std::endl;
16     }
17     return 0;
18 }

代码中第九行是什么意思?

在C语言中,rand()函数可以用来产生随机数,但是这不是真正意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值,C提供了srand()函数,它的原形是void srand( int a)

1)首先给srand()提供一个种子,它是一个unsigned int类型,其取值范围从0~65535;

2)然后调用rand(),它会根据提供给srand()的种子值返回一个随机数(在0到32767之间)

归纳:要取得[a,b)之间的随机整数,使用(rand() % (b-a))+ a 或者(rand() * (b-a)) / RAND_MAX + a

Ref:

http://blog.csdn.net/qin_zhangyongheng/article/details/8033936

以上是关于C/C++语言中让电脑随机的在某个范围中的任一随机数的主要内容,如果未能解决你的问题,请参考以下文章

在VB中,如何生成某个范围内的随机整数?

C语言rand函数生成随机数详解和示例

C/c++中如何产生指定的随机字符

用rand随机函数怎么求指定范围的随机数

[NOI2014]随机数生成器

怎样用java产生一个指定范围的随机数?