美文网首页C++
C++随机数

C++随机数

作者: 山鬼谣弋痕夕 | 来源:发表于2017-08-29 11:37 被阅读0次

C++ 随机数

在许多情况下,需要生成随机数。关于随机数生成器,有两个相关的函数。一个是 rand(),该函数只返回一个伪随机数。生成随机数之前必须先调用 srand() 函数。

原型:void srand(unsigned seed);

用法:它需要提供一个种子,这个种子会对应一个随机数,如果使用相同的种子后面的rand()函数会出现一样的随机数。

1   如: srand(1); 直接使用1来初始化种子。不过为了防止随机数每次重复,常常使用系统时间来初始化,即使用 time函数来获得系统时间,它的返回值为从 00:00:00 GMT, January 1, 1970 到现在所持续的秒数,然后将time_t型数据转化为(unsigned)型再传给srand函数

即: srand((unsigned) time(&t));

 2   还有一个经常用法,不需要定义time_t型t变量,即: srand((unsigned) time(NULL)); 直接传入一个空指针,因为你的程序中往往并不需要经过参数获得的t数据。

下面是一个关于生成随机数的简单实例。实例中使用了 time() 函数来获取系统时间的秒数,通过调用 rand() 函数来生成随机数,srand函数是随机数发生器的初始化函数。

运行程序 运行结果

小贴士:计算机并不能产生真正的随机数,而是已经编写好的一些无规则排列的数字存储在电脑里,把这些数字划分为若干相等的N份,并为每份加上一个编号用srand()函数获取这个编号,然后rand()就按顺序获取这些数字,当srand()的参数值固定的时候,rand()获得的数也是固定的,所以一般srand的参数用time(NULL),因为系统的时间一直在变,所以rand()获得的数,也就一直在变,相当于是随机数了。

只要用户或第三方不设置随机种子,那么在默认情况下随机种子来自系统时钟。如果想在一个程序中生成随机数序列,需要至多在生成随机数之前设置一次随机种子。 即:只需在主程序开始处调用srand((unsigned)time(NULL));

注意:不要在for等循环放置srand((unsigned)time(NULL));

srand((unsigned)time(NULL))详解

相关文章

  • c++随机数

    c++产生若干随机数 产生某一区间的随机数

  • C++随机数

    C++ 随机数 在许多情况下,需要生成随机数。关于随机数生成器,有两个相关的函数。一个是 rand(),该函数只返...

  • C语言如何使用随机数?

    C语言如何使用随机数? 功能介绍推送一些C语言方面的知识,提供C语言/C++语言资料,讨论和学习C语言/C++编程...

  • c++ 随机数

    ``` #include #include #include usingnames...

  • c++不重复随机数序列

    参考 C++ 产生不重复随机数的方法[https://www.jianshu.com/p/fd23141df09a...

  • 区块链安全—随机数安全分析(上)

    一、前言 “随机数”在计算机程序中并不少见,开发人员也会经常使用随机数进行数值的模拟、预测。在C++程序里,我们经...

  • 随机数产生

    用C++实现,产生100以内得随机数 函数实现: 实验结果: 设定产生得数据长度为10。

  • c++ 6、随机数

    C++ 可以使用内置库CSTDLIB()中的srand()和rand()函数来产生随机数。r...

  • C++ 随机数浅谈

    从学习C语言就会接触到的一个东西,随机数,但是在这个随机数真的是随机的吗?答案肯定是不是的,对于计算机的所以语言实...

  • c++生成随机数

    一.获取均匀分布的随机数###经典方法: rand的机制是根据一个随机数种子(通常是一个整数值,如果没有设置,则为...

网友评论

    本文标题:C++随机数

    本文链接:https://www.haomeiwen.com/subject/aucodxtx.html