伪随机数的生成

简介:

@[TOC]

前言:

1.博主实力有限,博文有什么错误,请指出。万分感谢!
2.对像猜数字,三子棋,扫雷等小游戏我们都需要解决的问题:随机数的生成(其实是伪随机数的生成)

一.随机数的生成需要的库函数:rand,srand,time

int rand(void )
1.rand函数内部通过线性同余法实现,他并不是真的生成随机数,只不过因为其周期特别长,所以在一定范围内可看成随机的。
2..rand函数返回一个范围为0到RAND_MAX(0x7fff==32767)的伪随机整数()。在调用rand之前,使用srand()函数为伪随机数生成器设置种子即起点
3..头文件:#include <stdlib.h>
void srand(unsigned int)
1.参数类型为无符号整形
2.用于初始化rand()函数的起点。
3.头文件:#include <stdlib.h>
time_t time( time_t *timer );
1.time_t 是long long型,只不过被typedef重新命名了。
2..time函数根据系统时钟返回自1970年1月1日午夜(00:00:00)以来经过的秒数。返回值存储在计时器给出的位置中。这个参数可以是NULL,在这种情况下不存储返回值。
3.头文件:#include <time.h>

二.rand与srand的关系(随机数的生成)

image-20210804221927065

分析看到:

image-20210804224317658

分析:

这样形式的设置种子,每次重新生成随机数仍是相同,因为其种子不变了(和默认1一样道理)。
这就需要我们每次都能改变种子,而时间可以满足我们的需求,对此我们通过时间戳的方法解决这个问题。

成功版

image-20210804230709442

1.srand函数的参数类型为unsigned
2.srand()是以时间戳设置随机种子的,如果我们将其放再循环中,可能在每次循环的时间差很小(毕竟是ms级的),导致我们设置了同一随机种子。

感言:本文是为了后面博文设计的。

相关文章
【笔记】PCIe LTSSM 状态转移
【笔记】PCIe LTSSM 状态转移
2401 0
【笔记】PCIe LTSSM 状态转移
|
存储 负载均衡 Dubbo
深入理解Dubbo-4.Dubbo扩展SPI
深入理解Dubbo-4.Dubbo扩展SPI
258 1
|
安全 测试技术
沙箱环境通常应用于哪些场景?
沙箱环境通常应用于哪些场景?
|
弹性计算 安全 Linux
SSH 无法远程登录问题的处理思路
购买云服务器 ECS(后续简称 ECS)Linux 服务器后,首先面临的就是如何登录和使用的问题。而由于服务器在云端,所以日常运维中通常都会基于 SSH 客户端登录服务器进行相关操作。今天,我们就从登录 ECS 的不同方法和使用场景讲起,捋清 SSH 无法远程登录问题的常见原因与排查思路。
|
10月前
【YashanDB 知识库】如何排查 YMP 报错:”OCI 版本为空或 OCI 的架构和本地系统的架构不符“
在迁移预检查的版本检查阶段报错“OCI 版本为空”,原因是 OCI 架构与本地系统不符或依赖库缺失。排查发现 `libdrv_oracle.so` 缺少 `libnsl.so.1` 库,尽管 OCI 客户端路径已正确加入 `LD_LIBRARY_PATH`。解决方法包括下载安装相应动态库版本,或通过软链接指向更高版本库(如 `libnsl.so.2`)。总结:确保动态库路径正确配置,并使用 `ldd` 查看依赖库,必要时创建软链接以解决问题。
|
存储 设计模式 网络协议
Netty网络框架(一)
Netty网络框架
992 1
|
canal SQL 消息中间件
阿里Canal框架(数据同步中间件)初步实践
阿里Canal框架(数据同步中间件)初步实践
1231 82
阿里Canal框架(数据同步中间件)初步实践
|
Rust Linux 开发工具
Rust安装
该文介绍了如何在Linux、mac和Windows上安装Rust编程语言。在Linux和mac系统中,可以通过运行一个curl命令自动下载并安装;在Windows上,需从官方网站下载安装包。安装完成后,使用`rustc --version`检查Rust版本以确认安装成功。此外,还提到了如何更新Rust(使用`rustup update`)和卸载(使用`rustup self uninstall`)以及查看官方文档(运行`rustup doc`)。推荐的开发工具有Visual Studio Code和JetBrains CLion,需要安装Rust插件。
|
Kubernetes 安全 测试技术
Docker|kubernetes|本地镜像批量推送到Harbor私有仓库的脚本
Docker|kubernetes|本地镜像批量推送到Harbor私有仓库的脚本
1094 0