博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
随机算法
阅读量:4960 次
发布时间:2019-06-12

本文共 1410 字,大约阅读时间需要 4 分钟。

 
class Solution {private:    vector
vc;public: Solution(vector
nums) { vc = nums; } int pick(int target) { vector
tmp; int size = 0; for (int i = 0; i < vc.size(); ++i) { if (target == vc[i]) { if (tmp.size() != 0) { int lim = 66666666 - 66666666 % i; int id = rand(); while (id > lim) id = rand(); id %= ++size; if (id == 0) tmp[id] = i; } else { ++size; tmp.push_back(i); } } } return tmp[0]; }};
View Code

 

 

首先这个是生成1--7的,然后也很容易 -1 生成0--6(方便我使用)

所以就是可以这样:rand7() * 7 + rand7()

0:     0    1    2    3    4    5    6 1:     7    8    9   10   11   12   13 2:    14   15   16   17   18   19   20 3:    21   22   23   24   25   26   27 4:    28   29   30   31   32   33   34 5:    35   36   37   38   39   40   41 6:    42   43   44   45   46   47   48

可以把大于等于40的都排除,那么就产生了6份 0---9的数字了。

class Solution {public:        int my() {        return rand7() - 1;    }        int rand10() {        int seed = 7;        int t = my() * seed + my();        while (t > 39) t = my() * seed + my();                return t % 10 + 1;    }};

 

转载于:https://www.cnblogs.com/liuweimingcprogram/p/9704319.html

你可能感兴趣的文章
要想找出正好包含5个字符的名字
查看>>
用js把图片做的富有动态感,并对以后需要用着的属性进行封装
查看>>
ArcGIS Runtime For Android 100.3天地图不加载问题
查看>>
线性表
查看>>
【转】解决eclipse新导入工程无法run as server
查看>>
【转】struts1.2的action参数配置
查看>>
快速幂&快速乘
查看>>
WebLogic 12c 多节点Cluster静默安装
查看>>
win8中如何禁用屏幕旋转的快捷键
查看>>
Solution 23: 判断矩形和圆是否相交
查看>>
Qt And MFC Mouse Over Tips
查看>>
JSP/Servlet 中的汉字编码问题
查看>>
《构建之法》(十)
查看>>
django之信号
查看>>
[noip2013]货车运输(kruskal + 树上倍增)
查看>>
简单工厂模式
查看>>
#hashMap冲突原理#详细
查看>>
基于单片机定时器---年月日时分秒的算法
查看>>
linux中IDE和SATA硬盘的区别
查看>>
关于清理缓存的解决方案
查看>>