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

C++ 随机数浅谈

作者: 彦子凡 | 来源:发表于2017-08-05 15:42 被阅读11次

从学习C语言就会接触到的一个东西,随机数,但是在这个随机数真的是随机的吗?答案肯定是不是的,对于计算机的所以语言实现的所有随机数的方法都是伪随机的,只不过很接近随机数.
在C++中,使用随机数用到的API是rand(),可以去百度一下之类的看看,这个API在一定的程度是多次甚至每次都会取到相同的随机,什么原因,有人解释的比我好,所以不需要我去多解释了吧,这里我说一说怎么用吧.加上一个time的算法,也就是计算机的系统试讲相关,这样的话就会使得这个随机数的种子发生变化,从而变得"随机"起来.

//头文件
#include <time.h>
srand((unsigned)time(NULL));

升华的随机数的区间

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

升华部分如果你只想怎么去用的话,直接拿去用,肯定是没有错的,但是如果以后的,没有网的情况下,找不到资料,不会写不就完蛋了,所以接下来我解释一下升华部分的是怎么来的,随便挑一个说说,就说第四个,区间是[a,b]:
第一步,确定区间大小,也就是数据的个数,是b-a+1,这个不用说吧。
第二步,试着去取同样区间大小的随机数,rand()%x 的区间是[1,x-1],就这样可以试着去取一下,取rand%(b-a+2),大小为b-a+1,不是么?
第三步,按上一步取的区间,应该是[1,b-a+1],那么加上一个a-1呢?是不是就是从a开始了,到b结束了?所以就是rand%(b-a+2)+a-1
第四步,合并不必要的数字,也就是把1合并进rand,不就得到上述的函数了?
end

相关文章

  • C++ 随机数浅谈

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

  • c++随机数

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

  • 一些函数

    cmp函数 C++ sort cmp函数 - lzz的博客 - CSDN博客 浅谈C/C++排序函数中cmp()比...

  • 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++ 随机数浅谈

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