首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

如何产生0~1000000的浮点随机数

2013-10-15 
怎么产生0~1000000的浮点随机数?rt,用c++产生,要分布均匀的,最好不要太复杂,谢谢![解决办法]rand()*1. / (

怎么产生0~1000000的浮点随机数?
rt,用c++产生,要分布均匀的,最好不要太复杂,谢谢!
[解决办法]
rand()*1. / (RAND_MAX/1000000.)
[解决办法]

引用:
rand()*1. / (RAND_MAX/1000000.)

+1

順便加个
srand(time(NULL));

免得每次随机相同的数

[解决办法]
c++ primer 5 edition
引用
Best Practices
C++ programs should not use the library rand function. Instead, they should use the default_random_engine along with an appropriate distribution object.


[解决办法]
引用:
rand()产生的最大随机数是32767,把它再除以一个数,会比32767大吗?

最大的返回值不是 32767 而是 RAND_MAX
就算是 32767 
只要
除以0.32767  就能得到10000
除以0.032767 就能得到100000
除以0.0032767就能得到1000000


[解决办法]
引用:
对浮点数随机数现在普便要求都是

1 > 随机数 > 0

你这需求有些怪.不知道你对 Mersenne Twister算法 怎么看

直接用mt19937, mt19937_64
需要customize可洽std::mersenne_twister_engine


#include <ctime>
#include <iostream>
#include <random>
 
int main()
{
    std::uniform_real_distribution<double> u(0, 1000000);
    std::mt19937 e(std::time(0));
    for(size_t i = 0; i != 100; ++i){
        std::cout<<u(e)<<std::endl;
    }
 
    return 0;
}

热点排行