C/C++——生成随机数
时间:2022-05-04
本文章向大家介绍C/C++——生成随机数,主要内容包括1、不指定范围的随机数、2、在指定范围内生成随机数、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
1、不指定范围的随机数
在C/C++中,产生随机数需要使用到函数srand()函数和rand()函数。在C语言中,srand()函数和rand()函数都是定义在
2、在指定范围内生成随机数
2.1、生成在指定区间start~end之间的随机整数:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int Random(int start, int end){
int dis = end - start;
return rand() % dis + start;
}
int main(){
int a[10];
int i = 0;
srand((unsigned)time(NULL));
for (i = 0; i < 10; i++){
a[i] = Random(2, 7);
}
for (i = 0; i < 10; i++){
printf("%d ", a[i]);
}
printf("n");
return 0;
}
2.2、生成0~1之间的随机数
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
double a[10];
int i = 0;
srand((unsigned)time(NULL));
for (i = 0; i < 10; i++){
a[i] = rand() / (RAND_MAX + 1.0);
}
for (i = 0; i < 10; i++){
printf("%f ", a[i]);
}
printf("n");
return 0;
}
2.3、生成指定区间start~end上的随机浮点数:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
double Random(int start, int end){
int dis = end - start;
printf("dis: %dn", dis);
return start + dis * (rand() / (RAND_MAX + 1.0));
}
int main(){
double a[10];
int i = 0;
srand((unsigned)time(NULL));
for (i = 0; i < 10; i++){
a[i] = Random(2,4);
}
for (i = 0; i < 10; i++){
printf("%lf ", a[i]);
}
printf("n");
return 0;
}
3、不使用内置随机数函数的生成方法
主要方法:生成一个很大的数,通过截断的方法生成随机数
#include <stdio.h>
int main(){
unsigned long long next_random = 1;
for (int i = 0; i < 30; i ++){
next_random = next_random * (unsigned long long)25214903917 + 11;
fprintf(stderr, "%fn", (((next_random & 0xFFFF) / (float)65536) - 0.5));
}
return 0;
}
- JavaScript内置对象--Math对象
- oAuth 2.0 笔记
- common-pool2 学习:thrift连接池的另一种实现
- IntelliJ IDEA 17和Maven构建javaWeb项目
- spring-boot 速成(2) devtools之热部署及LiveReload
- spring-boot 速成(2) devtools之热部署及LiveReload
- 使用git提交项目
- JavaScript中的内置对象--Number对象
- 自动驾驶落地,究竟被什么绑住了脚?
- JDBC(三)数据库连接池(DBCP、C3P0)
- Single Page Application概览
- HashSet集合中hashCode及equals方法详解
- 企鹅智造企业发展论坛:共话小程序生态下的企业营销
- MySQL(十六)之MySQL用户管理
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 容器技术|Docker三剑客之Compose
- ProxySQL+Mysql实现数据库读写分离实战
- 打造高逼格、可视化的Docker容器监控系统平台
- 企业面试题|最常问的MySQL面试题集合(一)
- 深入理解消息中间件技术之RabbitMQ服务
- 手把手从0开始教你搭建Jumpserver,为服务器安全保驾护航!
- 企业面试题|最常问的MySQL面试题集合(二)
- 值得一看的35个Redis面试题总结
- 容器技术|Docker三剑客之docker-machine
- 企业面试题|最常问的MySQL面试题集合(三)
- 「微服务架构」API版本控制最佳实践介绍
- 2020年最新字节、阿里、腾讯、爱奇艺等BAT Android社招高频面试题,押题99.98%!
- 使用镜像部署 Hexo 静态页面
- 基于zmq RPC简单C++实现
- App为什么会crash?一篇文章带你探究根本原因 ,事情没有你想得那么简单!