c++中随机生成实数

这里整理了c++生成随机数的一般方法,然后列出了生成随机实数的程序。

参考博客:
https://blog.csdn.net/hellokandy/article/details/90045187
https://blog.csdn.net/Gary_ghw/article/details/125498414


前言

在生成随机数之前要先知道c++中的rand()产生的是伪随机数,每次执行时得出的数据都是相同的。因此,为了得到不同的数据就要用srand()函数去初始化它。


  • 设置随机数种子
    通常在程序开始时采用语句:srand((unsigned)time(NULL))使获得的随机数都不重复,
    后面便可直接使用rand()便可获得随机数了。

1、获得a~b之间的一个随机整数

rand()%(b-a+1)+a;

具体举几个例子:
(1) 产生0~9这10个整数中的一个随机整数

rand()%10;

(2) 产生1~10这10个整数中的一个随机整数

rand()%10+1;

2、获得0~10.0之间的15个随机实数

#include <iostream>
#include <unordered_map>
using namespace std;

int main(){
	double a[15];
	srand((unsigned)time(NULL));
	for(int i=0;i<15;i++){
		a[i]=rand() / (double) RAND_MAX *10.0;
		cout<<a[i]<<" ";
	}
	cout<<endl;
}

其中rand() / double(RAND_MAX)是获得0~1之间浮点数的语句。
此时生成的结果如下:
随机浮点数结果

若只想得到一个小数的随机数可以通过round()函数获得:

#include <iostream>
#include <unordered_map>
using namespace std;

int main(){
	double a[15];
	srand((unsigned)time(NULL));
	for(int i=0;i<15;i++){
		a[i]=rand() / (double) RAND_MAX *10.0;
		cout<<a[i]<<" ";
		a[i]=round(a[i]*10)/10;
		cout<<a[i]<<" ";
	}
	cout<<endl;
}

产生结果如下:
将浮点数保留了一位小数

上图中每个随机生成的浮点数通过round()函数将其四舍五入,得到了保留一位小数的随机数。

若想保留两位小数,只需写成a[i]=round(a[i]*100)/100;即可。

本文只是整理一下自己用的程序碎片,如有错误欢迎批评指正。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值