当前位置: 首页 > news >正文

jfinal网站开发ciliba磁力搜索引擎

jfinal网站开发,ciliba磁力搜索引擎,周口学做网站,网站须知先说说什么是拒绝采样算法:就类似于数学上的求阴影面积的方法,直接求求不出来,就用大面积 - 小面积 阴影面积的办法。 所谓拒绝 和 采样 :就像是撒豆子计个数,计算概率问题一样,大桶里面套小桶&#xff0c…

        先说说什么是拒绝采样算法:就类似于数学上的求阴影面积的方法,直接求求不出来,就用大面积 - 小面积 = 阴影面积的办法。

        所谓拒绝 和 采样 :就像是撒豆子计个数,计算概率问题一样,大桶里面套小桶,一把豆子撒下去,每个豆子都是一个“样本”,如果落在小桶外面的大桶里面去了,就“拒绝”这个样本,如果在小桶里,就“采用”这个样本, 就这样拒绝-和采用所有的豆子,小桶里面的豆子数量除以所有的豆子的数量就得到啊小桶在大桶里的占比,也就是豆子落在小桶里的概率……………………巴拉巴拉一些关于概率的问题就可以这样求解了。

这是力扣的两题,一一举例加以解释。

读题:现在有一个只能生成1、2、3、4、5、6、7这7个数字的随机函数Rand7(),问你如何用这个函数实现一个可以随机生成1~10的随机函数Rand10()(PS:随机函数,生成其中每个值的概率必须相等才行

想法:想想二进制(011010010111000010101010)这玩意,用两个Rand7()就可以生成7*7=49种选择,我们只要10种就够了,所以可以有

1和1、1和2、1和3   表示 1

1和4、1和5、1和6  表示  2

2和1、2和2、2和3   表示 3

2和4、2和5、2和6  表示  4

3和1、3和2、3和3   表示 5

3和4、3和5、3和6  表示  6

4和1、4和2、4和3   表示 7

4和4、4和5、4和6  表示  8

5和1、5和2、5和3   表示 9

5和4、5和5、5和6  表示  10

6和1、6和2、6和3   (拒绝表示)

6和4、6和5、6和6   (拒绝表示)

7和1、7和2、7和3   (拒绝表示)

7和4、7和5、7和6   (拒绝表示)

也就是:第一个Rand7() 只能生成1~5中的一个数,第二个Rand7()只能生成1~6中的一个数,不然就拒绝采样,重新生成才行。

代码:(优化前)

class Solution {
public:int rand10() {int a,b;while(1){a = rand7();if( a != 6 && a != 7 ) break;}while(1){b = rand7();if( b != 7 ) break;}if( a == 1 ){if( b <= 3 ) return 1;else return 2;}else if( a == 2 ){if( b <= 3 ) return 3;else return 4;}else if( a == 3 ){if( b <= 3 ) return 5;else return 6;}else if( a == 4 ){if( b <= 3 ) return 7;else return 8;}else {if( b <= 3 ) return 9;else return 10;}}
};

代码:(优化后)

class Solution {
public:int rand10() {while (true) {int num = (rand7() - 1) * 7 + rand7();if (num <= 40) return num % 10 + 1;}}
};

不懂??????????没关系,看第二个,更简单!!!!!!!!!!!!!!!!!

第二题(别看题目,看下面读题

读题:给一个半径 r0 和圆心坐标 x0, y0 ; 然后返回这个圆上或者圆内随机一点的坐标值(注:全是double类型,而且落在每一点上的概率必须相等

官解:两个随机函数呗,一个随机范围是 [ x0-r0, x0+r0 ] ,另一个是[ y0-r0, y0+r0 ], 只要两个随机数的平方和大于了半径 r0 就统统 “拒绝”,只计算 平方和小于半径的结果,看图: 

(这官解太low了)

这不就是撒豆子算概率问题嘛,随机生成的坐标点 x , y 就豆子的落点,这个落点只能在圆内,如果在圆外了就“拒绝”这个坐标,给我重新生成去。

(单纯是为了说明拒绝采样算法而已,此题有更佳的解法)

// 作者:力扣官方题解
class Solution {
private:mt19937 gen{random_device{}()};uniform_real_distribution<double> dis;double xc, yc, r;public:Solution(double radius, double x_center, double y_center): dis(-radius, radius), xc(x_center), yc(y_center), r(radius) {}vector<double> randPoint() {while (true) {double x = dis(gen), y = dis(gen);if (x * x + y * y <= r * r) {return {xc + x, yc + y};}}}
};

最有解法:(极坐标法)

 (这字丑自己都不想看)

代码:(并没有用拒绝采样算法,但是效率上是它的两倍,拒绝采样要170ms+,但是极坐标只需要80ms)

class Solution {
private:double rc,xc,yc;
public:Solution(double radius, double x_center, double y_center) {rc = radius;xc = x_center;yc = y_center;}vector<double> randPoint() {double Rx = rc * sqrt( (double)rand()/RAND_MAX );double angle = 2 * M_PI * (double)rand()/RAND_MAX;return { xc + Rx*cos(angle), yc + Rx*sin(angle)};}
};

http://www.zhongyajixie.com/news/22718.html

相关文章:

  • 安卓电商app开发seo广告投放是什么意思
  • seo推广计划重庆seo网络推广
  • 校园互动网站建设seo标题优化导师咨询
  • 朝阳网站开发门户网站制作
  • 如何建设网站并与数据库相连全达seo
  • 天津建网站的公司大数据精准营销
  • php框架做网站软文素材库
  • 绿色国网app下载地址沈阳网站关键词优化多少钱
  • 湖滨网站建设推广代理登录页面
  • wordpress 隐藏文章标题郑州seo关键词优化公司
  • 网站建设技术服务的方式是什么网站群发软件
  • 怎样建设一个游戏网站营销软文800字范文
  • 做网站编程百度网页版登录首页
  • 服务器iis做网站公司seo是什么级别
  • ps怎么做网站首页和超链接google chrome
  • 做logo设计的网站大片网站推广
  • 获得网站php管理员密码指数基金排名前十名
  • 网站物理结构如何免费制作自己的网站
  • 浏览器做单页网站项目实时新闻
  • 找百度公司做网站怎么样怎么创建网站教程
  • 清河做网站多少钱腾讯企点官网
  • 泰安可靠的网站建设天津建站网
  • 为客户做网站的方案互联网广告联盟
  • 北京好的网站建设公司百度客服怎么转人工
  • 惠州禅城网站建设郑州seo优化外包顾问
  • 北京有哪些炫酷的网站页面秦皇岛seo招聘
  • 做思维导图的在线网站北京seo培训
  • 一个网站如何做盈利网销是做什么的
  • 有没有什么网站做卷子重要新闻
  • 域名申请了怎么做网站搜索引擎有哪几个网站