c++求两个float数之间的php 随机数函数的函数

1. & & C++随机数函数
(1) &rand()
& & & &intrand();&&&&&&&&&&&&&&&&&&&&&//返回从[0,MAX)之间的随机整数;需#include
(2) &srand()和 time()
& & & &void srand( unsigned seed);&&&&&&//设置随机数种子,#include &cstdlib&&&
& & & & time_t time( time_t *time);&&&&&&&&&//返回当前时间,#include&ctime&
& & & & 用法:
& & & &1)&&& srand(time(0));&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//根据系统时间设置随机数种子
& & & & & & & &int i = rand() %N;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& //取得区间[0,N)的整数
& & & &2)&&&//srand()函数产生一个以当前时间开始的随机种子.
& & & & & & &//应该放在for等循环语句前面不然要很长时间等待
& & & & & & & srand( (unsigned)time( NULL ) );
& & & & & & & for (int i=0;i&10;i++)
& & & & & & & & & & &cout &&rand() % MAX &&&& //MAX为最大&#20540;,其随机域为<span style="color:#~MAX-1
<span style="color:#.&&&&double和float的区别
& & & &float和double的范围是由指数的位数来决定的。
& & & &float的指数位有<span style="color:#位,而double的指数位有<span style="color:#位,分布如下:
& & & &float: & &&<span style="color:#bit(符号位) 8bits(指数位) 23bits(尾数位)
& & & double:&<span style="color:#bit(符号位) 11bits(指数位) 52bits(尾数位)
& & &&于是,float的指数范围为-127~&#43;128,而double的指数范围为-1023~&#43;1024,并且指数位是按补码的形式来划分的。其中负指数决定了浮点数所能表达的绝对&#20540;最小的非零数;而正指数决定了浮点数所能表达的绝对&#20540;最大的数,也即决定了浮点数的取&#20540;范围。
& & & & float的范围为-2^128 ~ &#43;2^128,也即-3.40E&#43;38 ~ &#43;3.40E&#43;38;double的范围为-2^1024
~ &#43;2^1024,也即-1.79E&#43;308 ~&#43;1.79E&#43;308。
& & & & float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,由于它是不变的,故不能对精度造成影响。
& & & & float:<span style="color:#^23 = 8388608,一共七位,这意味着最多能有<span style="color:#位有效数字,但绝对能保证的为<span style="color:#位,也即float的精度为<span style="color:#~7位有效数字;
& & & &double:<span style="color:#^52 =0496,一共<span style="color:#位,同理,double的精度为<span style="color:#~16位。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1432次
排名:千里之外【C++11】随机值获取——random - 简书
【C++11】随机值获取——random
我们知道,C 中的随机数函数只有一个 rand( ) ,想生成某一区间范围内的随机数乃至随机的浮点数都十分麻烦。
而 C++11 中提供的 random 库解决了这一问题,它能让我们方便地生成需要的随机值。
下面将介绍如何利用 random 库中的组件生成符合条件的随机数。
random 库中的组件分为两类——随机数引擎类和随机数分布类。
随机数引擎类是可以独立运行的随机数发生器,它以均匀的概率生成某一类型的随机数,但无法指定随机数的范围、概率等信息。因此,它也被称为“原始随机数发生器”,由于不能指定生成随机数的范围,它通常不会被单独使用。
随机数分布类是一个需要于随机数引擎类的支持才能运行的类,但是它能根据用户的需求利用随机数引擎生成符合条件的随机数,例如某一区间、某一分布概率的随机数。
所有随机数引擎类都支持的操作如下:
创建一个引擎。
Engine e(s)
创建一个引擎,并用 s 作为种子。
使用种子 s 充值 e 的状态。
e.min( ), e.max( )
e 能生成的最小值和最大值。
e.discard(u)
将 e 推进 u 步(u 的类型为 unsigned long long)。
下表随机数分布类共有的操作:
创建一个分布类 u 。
用随机数引擎 e 生成随机数(u 代表随机数分布类)。
u 能生成的最小值。
u 能生成的最大值。
u.reset( )
重置 u 的状态,使随后 u 生成的值不受之前的值影响 。
随机非负数——default_random_engine
default_random_engine 是一个随机数引擎类。它定义的调用运算符返回一个随机的 unsigned 类型的值。
因此,若想生成 10 个随机非负数并输出,程序可以这么写:
#include &iostream&
#include &random&
int main( ){
default_random_
for(int i=0; i&10; ++i)
cout&&e( )&&
在我们的系统中,测试结果为:
可以看出,还是比较“随机”的。
当然,default_random_engine 也只是一个伪随机数发生器,如果在运行一次程序,得到结果将还是这几个数。
若想令每次运行程序时的生成结果不同,可以为其设置较为随机的种子,比如当前系统的时间。
特定范围的非负数——uniform_int_distribution
uniform_int_distribution 是一个随机数分布类,也是个模板类,模板参数为生成随机数的类型(不过只能是 int、unsigned、short、unsigned short、long、unsigned long、long long、unsigned long long 中的一种)。它的构造函数接受两个值,表示随机数的分布范围(闭区间)。
因此,一个生成 0 到 9 的随机数程序可以这么写:
#include &iostream&
#include &random&
int main( ){
default_random_
uniform_int_distribution&unsigned& u(0, 9);
for(int i=0; i&10; ++i)
cout&&u(e)&&
在我们的系统中,它的生成结果为:
随机浮点数——uniform_real_distribution
uniform_real_distribution 是一个随机数分布类,它也是模板类,参数表示随机数类型(可选类型为 float、double、long double)。构造函数也需要最大值和最小值作为参数。
下面是一个生成 10 个 0~1 之间的随机浮点数的例子:
#include &iostream&
#include &random&
int main( ){
default_random_
uniform_real_distribution&double& u(0.0, 1.0);
for(int i=0; i&10; ++i)
cout&&u(e)&&
在我们的系统上的结果为:
随机布尔值——bernoulli_distribution
bernoulli_distribution 是一个分布类,但它不是模板类。它的构造函数只有一个参数,表示该类返回 true 的概率,该参数默认为 0.5 ,即返回 true 和 false 的概率相等。
下面是一个生成 10 个随机布尔值的例子:
#include &iostream&
#include &random&
int main( ){
default_random_
bernoulli_
for(int i=0; i&10; ++i)
cout&&u(e)&&
在我们的系统上的结果为:
常用的随机数类如下:
default_random_engine:随机非负数(不建议单独使用)。
uniform_int_distribution:指定范围的随机非负数。
uniform_real_distribution:指定范围的随机实数。
bernoulli_distribution:指定概率的随机布尔值。
事实上,random 库的功能极其丰富,其中的随机数引擎不止有 default_random_engine 一个,分布类也远远不止上述三个。它还能进行泊松分布、正态分布、抽样分等高级的随机数功能,想详细了解这些内容请去查阅其他资料。我可能要等好久才能把这些内容补上。扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
下载作业帮安装包
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
c++随机函数 两个随机数相加的结果 在一定范围内怎么写
夏末秋凉丶媶
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
比如你要限定在0 -100那么你就写(rand() + rand() )%100如果你要再20-80之间(rand() + rand() )%60 + 20如果你要再-10 100之间(rand() + rand() )%110 -10依次类推,你懂的
为您推荐:
其他类似问题
扫描下载二维码}

我要回帖

更多关于 excel随机数函数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信