| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1379 人关注过本帖
标题:如何高效的生成指定区间的随机数
只看楼主 加入收藏
陈紫文
Rank: 1
等 级:新手上路
帖 子:14
专家分:4
注 册:2018-9-5
结帖率:62.5%
收藏
已结贴  问题点数:2 回复次数:3 
如何高效的生成指定区间的随机数
生成[a,b]区间上的随机数,a>0,a,b为整数
命中率要非常高
谢谢
//我现在一个还有两分,但还是麻烦大家帮帮忙
搜索更多相关主题的帖子: 生成 指定 区间 随机数 整数 
2018-11-08 16:49
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:1 
直接看示例 https://en.
程序代码:
#include <random>
#include <iostream>

int main()
{
    std::random_device rd;  //Will be used to obtain a seed for the random number engine
    std::mt19937 gen(rd()); //Standard mersenne_twister_engine seeded with rd()
    std::uniform_int_distribution<> dis(1, 6);

    for (int n=0; n<10; ++n)
        //Use dis to transform the random unsigned int generated by gen into an int in [1, 6]
        std::cout << dis(gen) << ' ';
    std::cout << '\n';
}
就是上图中的 std::uniform_int_distribution<> dis(1, 6)

命中率要非常高
听不懂

2018-11-08 16:56
rohalloway
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:97
专家分:405
注 册:2018-9-28
收藏
得分:1 
学习了,最近就遇到了随机数的需求问题,
时间种子的随机数,同时生成多个随机数就会出现随机数相同的问题
版主的例子非常好用,收藏起来了,谢谢!
2018-11-08 21:04
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:0 
回复 3楼 rohalloway
你是想生成无重复数字的随机数吗,那得用 std::shuffle
参见:https://en.

程序代码:
#include <random>
#include <algorithm>
#include <iterator>
#include <iostream>

int main()
{
    std::vector<int> v = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

    std::random_device rd;
    std::mt19937 g(rd());

    std::shuffle(v.begin(), v.end(), g);

    std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << "\n";
}
可能的输出
8 6 10 4 2 3 7 1 9 5

2018-11-09 08:37
快速回复:如何高效的生成指定区间的随机数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027055 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved