随机数 学习笔记

随机数学习笔记

摘要: 本文记录我第一次碰到随机数时,之后进行一些资料查阅时的笔记,以便以后碰到时快速查阅。根据我目前的了解,要想查询相关的资料,可从以下几个方面入手:密码学1,计算机模拟2,统计模拟。

实用部分

  • 基本函数

    srand() : void srand(unsigned int seed) //提供种子seed,可以使用srand((unsigned int)(time(NULL)))来初始化种子,使得每次产生的随机数序列不一样
    注: 系统默认的种子为1

    rand() : 获得在上述种子情况下,随机序列中的元素,默认情况下随机数范围为0 ~ RAND_MAX之间的整数,其中RAND_MAX大小为32767。

  • 包含头文件

#include<stdlib.h>   //添加这个才可以调用srand()和rand()函数


#include<time.h>   //添加时间函数之后就可以使得每次随机值不重复出现
  • 产生随机整数

rand() : 产生0 - RAND_MAX之间的整数
rand()%(b-a)+a : 产生[a,b)之间的随机整数
rand()%(b-a+1)+a : 产生[a,b]之间的随机整数
rand()%(b-a)+a+1 : 产生(a,b]之间的随机整数

a+(int)b*rand()/(RAND_MAX+1) : 另一种表达形式,产生[a,a+b)之间的整数

注: 本质其实就是模运算而已,参考资料7倒数第二行表述不清晰

  • 产生随机浮点数

rand()/double(RAND_MAX) :产生[0,1]之间的浮点数

更进一步,通过模运算可以得到想要的区间的浮点数
产生给定分布的随机数

具体请参阅资料 [6]

相关参考资料:

  1. 计算机程序设计艺术.第二卷.第三章
  2. 统计建模与R软件-薛毅-清华大学出版社2006-第十章
  3. Statistical Models.A.C.Davison Cambridge University Press -Chapter3.3
  4. Matlab中的伪随机数原理
  5. Random numbers: Lecture of Computational Physics—UTexas
  6. C++中某个实数区间均匀分布的用法
  7. C/C++中产生随机数(rand,srand用法)

脚注:


  1. 可以参阅中国密码学发展报告2009年版,或是找一本应用密码学的书籍就可以找到。
  2. 计算机模拟中随机数应该是很重要的一个基础。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值