vc++单精度随机数

来源:百度知道 编辑:UC知道 时间:2024/09/24 08:21:10
比如从1到100的10个随机数中,要求单精度输出
不是,就是随机数是单精度的,位数最好不一样,也是随机的 比如10个随机数,分别是2.89 31.2 47.2901这种

你就在1000个数里取10个随即数
然后将结果在除以10嘛...
=.=

你这问题很纠结。。 多数人提到随机数就好像这东西是个基本的简单概念, 其实这个概念很复杂。
提到随机最主要就是涉及到分布问题。 如果你是要整形的随机,可以理解为你要的就是平均分布, 但是你要浮点型随机的时候问题就没这么简单了。 浮点型表示的数据本身就是不均匀的, 绝对值大的时候表示的 相邻两个数差距大, 靠近0的时候表示的相邻两个数差距小, 那么随机怎么分布? 如果是按平均分布,那就需要大量的调用rand函数, 并且得到的结果几乎一定是非常大的。 如果是按float型的“平均”分布, 那么只要调用几次rand函数,但是得到的结果其实是接近对数分布的,会有很多超大超小的数,如果你按平均分布来算, 结果一定乱七八糟

估计你要的并不是“单精度的随机”。 虽然c语言中小数都是浮点数, 但不要把浮点数和小数混起来, 否则计算上迟早出问题

事实上,rand返回的数,并不是真正意义上的随机数,而是计算出来的。要获得真正意义上的随机数非常复杂。

不过,如果对概率要求不大,可以通过一个折衷的方法,取得所谓“单精度”数。

float r = (float) ( rand() % 10000 ) / 100.0;

具体什么意思?

单精度输出就是输出格式为float好了。。。
每次输出之前用float强制转换格式。或者printf("%f",输出数)也可以。。。

随机数是单精度的?什么意思